From 7f950a4ee79ca8d7e5a0469bef66f65ce2ce2f27 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 21 Jan 2019 13:46:28 -0800 Subject: [PATCH 1/2] Fully qualify import paths --- dist/oidc-client.js | 345 ++++++++++++++++++---------------- dist/oidc-client.min.js | 6 +- index.js | 32 ++-- lib/oidc-client.js | 345 ++++++++++++++++++---------------- lib/oidc-client.min.js | 6 +- src/AccessTokenEvents.js | 4 +- src/CheckSessionIFrame.js | 2 +- src/CordovaIFrameNavigator.js | 2 +- src/CordovaPopupNavigator.js | 2 +- src/CordovaPopupWindow.js | 2 +- src/ErrorResponse.js | 2 +- src/Event.js | 2 +- src/IFrameNavigator.js | 4 +- src/IFrameWindow.js | 2 +- src/InMemoryWebStorage.js | 2 +- src/JoseUtil.js | 2 +- src/JsonService.js | 4 +- src/MetadataService.js | 4 +- src/OidcClient.js | 18 +- src/OidcClientSettings.js | 8 +- src/PopupNavigator.js | 4 +- src/PopupWindow.js | 4 +- src/RedirectNavigator.js | 2 +- src/ResponseValidator.js | 12 +- src/SessionMonitor.js | 4 +- src/SigninRequest.js | 6 +- src/SigninResponse.js | 2 +- src/SigninState.js | 8 +- src/SignoutRequest.js | 6 +- src/SignoutResponse.js | 2 +- src/SilentRenewService.js | 2 +- src/State.js | 4 +- src/Timer.js | 6 +- src/TokenClient.js | 6 +- src/TokenRevocationClient.js | 6 +- src/UrlUtility.js | 4 +- src/User.js | 2 +- src/UserInfoService.js | 6 +- src/UserManager.js | 20 +- src/UserManagerEvents.js | 6 +- src/UserManagerSettings.js | 14 +- src/WebStorageStateStore.js | 4 +- 42 files changed, 481 insertions(+), 443 deletions(-) diff --git a/dist/oidc-client.js b/dist/oidc-client.js index 7bc6207b..76ace656 100644 --- a/dist/oidc-client.js +++ b/dist/oidc-client.js @@ -101,35 +101,35 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _Log = __webpack_require__(/*! ./src/Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./src/Log.js */ "./src/Log.js"); -var _OidcClient = __webpack_require__(/*! ./src/OidcClient */ "./src/OidcClient.js"); +var _OidcClient = __webpack_require__(/*! ./src/OidcClient.js */ "./src/OidcClient.js"); -var _OidcClientSettings = __webpack_require__(/*! ./src/OidcClientSettings */ "./src/OidcClientSettings.js"); +var _OidcClientSettings = __webpack_require__(/*! ./src/OidcClientSettings.js */ "./src/OidcClientSettings.js"); -var _WebStorageStateStore = __webpack_require__(/*! ./src/WebStorageStateStore */ "./src/WebStorageStateStore.js"); +var _WebStorageStateStore = __webpack_require__(/*! ./src/WebStorageStateStore.js */ "./src/WebStorageStateStore.js"); -var _InMemoryWebStorage = __webpack_require__(/*! ./src/InMemoryWebStorage */ "./src/InMemoryWebStorage.js"); +var _InMemoryWebStorage = __webpack_require__(/*! ./src/InMemoryWebStorage.js */ "./src/InMemoryWebStorage.js"); -var _UserManager = __webpack_require__(/*! ./src/UserManager */ "./src/UserManager.js"); +var _UserManager = __webpack_require__(/*! ./src/UserManager.js */ "./src/UserManager.js"); -var _AccessTokenEvents = __webpack_require__(/*! ./src/AccessTokenEvents */ "./src/AccessTokenEvents.js"); +var _AccessTokenEvents = __webpack_require__(/*! ./src/AccessTokenEvents.js */ "./src/AccessTokenEvents.js"); -var _MetadataService = __webpack_require__(/*! ./src/MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./src/MetadataService.js */ "./src/MetadataService.js"); -var _CordovaPopupNavigator = __webpack_require__(/*! ./src/CordovaPopupNavigator */ "./src/CordovaPopupNavigator.js"); +var _CordovaPopupNavigator = __webpack_require__(/*! ./src/CordovaPopupNavigator.js */ "./src/CordovaPopupNavigator.js"); -var _CordovaIFrameNavigator = __webpack_require__(/*! ./src/CordovaIFrameNavigator */ "./src/CordovaIFrameNavigator.js"); +var _CordovaIFrameNavigator = __webpack_require__(/*! ./src/CordovaIFrameNavigator.js */ "./src/CordovaIFrameNavigator.js"); -var _CheckSessionIFrame = __webpack_require__(/*! ./src/CheckSessionIFrame */ "./src/CheckSessionIFrame.js"); +var _CheckSessionIFrame = __webpack_require__(/*! ./src/CheckSessionIFrame.js */ "./src/CheckSessionIFrame.js"); -var _TokenRevocationClient = __webpack_require__(/*! ./src/TokenRevocationClient */ "./src/TokenRevocationClient.js"); +var _TokenRevocationClient = __webpack_require__(/*! ./src/TokenRevocationClient.js */ "./src/TokenRevocationClient.js"); -var _SessionMonitor = __webpack_require__(/*! ./src/SessionMonitor */ "./src/SessionMonitor.js"); +var _SessionMonitor = __webpack_require__(/*! ./src/SessionMonitor.js */ "./src/SessionMonitor.js"); -var _Global = __webpack_require__(/*! ./src/Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./src/Global.js */ "./src/Global.js"); -var _User = __webpack_require__(/*! ./src/User */ "./src/User.js"); +var _User = __webpack_require__(/*! ./src/User.js */ "./src/User.js"); exports.default = { Log: _Log.Log, @@ -164,6 +164,10 @@ module.exports = exports['default']; "use strict"; /* WEBPACK VAR INJECTION */(function(Buffer) { +Object.defineProperty(exports, "__esModule", { + value: true +}); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* @@ -1828,7 +1832,7 @@ var jsonParse = function () { }; }(); if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.asn1 == "undefined" || !KJUR.asn1) { KJUR.asn1 = {}; }KJUR.asn1.ASN1Util = new function () { @@ -2467,7 +2471,7 @@ var ASN1HEX = new function () {}();ASN1HEX.getLblen = function (c, a) { }return b; }; var KJUR;if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.lang == "undefined" || !KJUR.lang) { KJUR.lang = {}; }KJUR.lang.String = function () {};function Base64x() {}function stoBA(d) { @@ -2509,15 +2513,15 @@ var KJUR;if (typeof KJUR == "undefined" || !KJUR) { }function b64utohex(a) { return b64tohex(b64utob64(a)); }var utf8tob64u, b64utoutf8;if (typeof Buffer === "function") { - utf8tob64u = function utf8tob64u(a) { + exports.utf8tob64u = utf8tob64u = function utf8tob64u(a) { return b64tob64u(new Buffer(a, "utf8").toString("base64")); - };b64utoutf8 = function b64utoutf8(a) { + };exports.b64utoutf8 = b64utoutf8 = function b64utoutf8(a) { return new Buffer(b64utob64(a), "base64").toString("utf8"); }; } else { - utf8tob64u = function utf8tob64u(a) { + exports.utf8tob64u = utf8tob64u = function utf8tob64u(a) { return hextob64u(uricmptohex(encodeURIComponentAll(a))); - };b64utoutf8 = function b64utoutf8(a) { + };exports.b64utoutf8 = b64utoutf8 = function b64utoutf8(a) { return decodeURIComponent(hextouricmp(b64utohex(a))); }; }function utf8tob64(a) { @@ -2728,7 +2732,7 @@ var KJUR;if (typeof KJUR == "undefined" || !KJUR) { }return -1; }; if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.crypto == "undefined" || !KJUR.crypto) { KJUR.crypto = {}; }KJUR.crypto.Util = new function () { @@ -3069,7 +3073,7 @@ if (typeof KJUR == "undefined" || !KJUR) { this.oidhex2name = { "2a864886f70d010101": "rsaEncryption", "2a8648ce3d0201": "ecPublicKey", "2a8648ce380401": "dsa", "2a8648ce3d030107": "secp256r1", "2b8104001f": "secp192k1", "2b81040021": "secp224r1", "2b8104000a": "secp256k1", "2b81040023": "secp521r1", "2b81040022": "secp384r1", "2a8648ce380403": "SHA1withDSA", "608648016503040301": "SHA224withDSA", "608648016503040302": "SHA256withDSA" }; }(); if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.crypto == "undefined" || !KJUR.crypto) { KJUR.crypto = {}; }KJUR.crypto.ECDSA = function (h) { @@ -3272,7 +3276,7 @@ if (typeof KJUR == "undefined" || !KJUR) { }return null; }; if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.crypto == "undefined" || !KJUR.crypto) { KJUR.crypto = {}; }KJUR.crypto.ECParameterDB = new function () { @@ -4064,7 +4068,7 @@ function X509() { }return b; };X509.KEYUSAGE_NAME = ["digitalSignature", "nonRepudiation", "keyEncipherment", "dataEncipherment", "keyAgreement", "keyCertSign", "cRLSign", "encipherOnly", "decipherOnly"]; if (typeof KJUR == "undefined" || !KJUR) { - KJUR = {}; + exports.KJUR = KJUR = {}; }if (typeof KJUR.jws == "undefined" || !KJUR.jws) { KJUR.jws = {}; }KJUR.jws.JWS = function () { @@ -4364,25 +4368,32 @@ if (typeof KJUR == "undefined" || !KJUR) { }; exports.SecureRandom = SecureRandom; exports.rng_seed_time = rng_seed_time; - exports.BigInteger = BigInteger; exports.RSAKey = RSAKey; -exports.ECDSA = KJUR.crypto.ECDSA; -exports.DSA = KJUR.crypto.DSA; -exports.Signature = KJUR.crypto.Signature; -exports.MessageDigest = KJUR.crypto.MessageDigest; -exports.Mac = KJUR.crypto.Mac; -exports.Cipher = KJUR.crypto.Cipher; +var EDSA = KJUR.crypto.EDSA; +exports.EDSA = EDSA; +var DSA = KJUR.crypto.DSA; +exports.DSA = DSA; +var Signature = KJUR.crypto.Signature; +exports.Signature = Signature; +var MessageDigest = KJUR.crypto.MessageDigest; +exports.MessageDigest = MessageDigest; +var Mac = KJUR.crypto.Mac; +exports.Mac = Mac; +var Cipher = KJUR.crypto.Cipher; +exports.Cipher = Cipher; exports.KEYUTIL = KEYUTIL; exports.ASN1HEX = ASN1HEX; exports.X509 = X509; exports.CryptoJS = CryptoJS; // ext/base64.js + exports.b64tohex = b64tohex; exports.b64toBA = b64toBA; // base64x.js + exports.stoBA = stoBA; exports.BAtos = BAtos; exports.BAtohex = BAtohex; @@ -4428,11 +4439,20 @@ exports.intarystrtohex = intarystrtohex; exports.strdiffidx = strdiffidx; // name spaces + exports.KJUR = KJUR; -exports.crypto = KJUR.crypto; -exports.asn1 = KJUR.asn1; -exports.jws = KJUR.jws; -exports.lang = KJUR.lang; + +var _crypto = KJUR.crypto; +exports.crypto = _crypto; +var _KJUR = KJUR; +var asn1 = _KJUR.asn1; +exports.asn1 = asn1; +var _KJUR2 = KJUR; +var jws = _KJUR2.jws; +exports.jws = jws; +var _KJUR3 = KJUR; +var lang = _KJUR3.lang; +exports.lang = lang; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) /***/ }), @@ -17135,9 +17155,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.AccessTokenEvents = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _Timer = __webpack_require__(/*! ./Timer */ "./src/Timer.js"); +var _Timer = __webpack_require__(/*! ./Timer.js */ "./src/Timer.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17234,7 +17254,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.CheckSessionIFrame = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17352,7 +17372,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.CordovaIFrameNavigator = undefined; -var _CordovaPopupWindow = __webpack_require__(/*! ./CordovaPopupWindow */ "./src/CordovaPopupWindow.js"); +var _CordovaPopupWindow = __webpack_require__(/*! ./CordovaPopupWindow.js */ "./src/CordovaPopupWindow.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17388,7 +17408,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.CordovaPopupNavigator = undefined; -var _CordovaPopupWindow = __webpack_require__(/*! ./CordovaPopupWindow */ "./src/CordovaPopupWindow.js"); +var _CordovaPopupWindow = __webpack_require__(/*! ./CordovaPopupWindow.js */ "./src/CordovaPopupWindow.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17426,7 +17446,7 @@ exports.CordovaPopupWindow = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -17546,11 +17566,11 @@ var CordovaPopupWindow = exports.CordovaPopupWindow = function () { Object.defineProperty(exports, "__esModule", { - value: true + value: true }); exports.ErrorResponse = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -17560,35 +17580,35 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. var ErrorResponse = exports.ErrorResponse = function (_Error) { - _inherits(ErrorResponse, _Error); + _inherits(ErrorResponse, _Error); - function ErrorResponse() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - error = _ref.error, - error_description = _ref.error_description, - error_uri = _ref.error_uri, - state = _ref.state; + function ErrorResponse() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + error = _ref.error, + error_description = _ref.error_description, + error_uri = _ref.error_uri, + state = _ref.state; - _classCallCheck(this, ErrorResponse); + _classCallCheck(this, ErrorResponse); - if (!error) { - _Log.Log.error("No error passed to ErrorResponse"); - throw new Error("error"); - } + if (!error) { + _Log.Log.error("No error passed to ErrorResponse"); + throw new Error("error"); + } - var _this = _possibleConstructorReturn(this, _Error.call(this, error_description || error)); + var _this = _possibleConstructorReturn(this, _Error.call(this, error_description || error)); - _this.name = "ErrorResponse"; + _this.name = "ErrorResponse"; - _this.error = error; - _this.error_description = error_description; - _this.error_uri = error_uri; + _this.error = error; + _this.error_description = error_description; + _this.error_uri = error_uri; - _this.state = state; - return _this; - } + _this.state = state; + return _this; + } - return ErrorResponse; + return ErrorResponse; }(Error); /***/ }), @@ -17608,7 +17628,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.Event = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17771,9 +17791,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.IFrameNavigator = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _IFrameWindow = __webpack_require__(/*! ./IFrameWindow */ "./src/IFrameWindow.js"); +var _IFrameWindow = __webpack_require__(/*! ./IFrameWindow.js */ "./src/IFrameWindow.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -17822,7 +17842,7 @@ exports.IFrameWindow = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -17919,8 +17939,7 @@ var IFrameWindow = exports.IFrameWindow = function () { IFrameWindow.notifyParent = function notifyParent(url) { _Log.Log.debug("IFrameWindow.notifyParent"); - - if (window.parent && window !== window.parent) { + if (window.frameElement) { url = url || window.location.href; if (url) { _Log.Log.debug("IFrameWindow.notifyParent: posting url message to parent"); @@ -17964,7 +17983,7 @@ exports.InMemoryWebStorage = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -18023,7 +18042,7 @@ exports.JoseUtil = undefined; var _jsrsasign = __webpack_require__(/*! ../jsrsasign/dist/jsrsasign.js */ "./jsrsasign/dist/jsrsasign.js"); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -18200,9 +18219,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.JsonService = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -18565,9 +18584,9 @@ exports.MetadataService = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _JsonService = __webpack_require__(/*! ./JsonService */ "./src/JsonService.js"); +var _JsonService = __webpack_require__(/*! ./JsonService.js */ "./src/JsonService.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -18737,23 +18756,23 @@ exports.OidcClient = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _OidcClientSettings = __webpack_require__(/*! ./OidcClientSettings */ "./src/OidcClientSettings.js"); +var _OidcClientSettings = __webpack_require__(/*! ./OidcClientSettings.js */ "./src/OidcClientSettings.js"); -var _ErrorResponse = __webpack_require__(/*! ./ErrorResponse */ "./src/ErrorResponse.js"); +var _ErrorResponse = __webpack_require__(/*! ./ErrorResponse.js */ "./src/ErrorResponse.js"); -var _SigninRequest = __webpack_require__(/*! ./SigninRequest */ "./src/SigninRequest.js"); +var _SigninRequest = __webpack_require__(/*! ./SigninRequest.js */ "./src/SigninRequest.js"); -var _SigninResponse = __webpack_require__(/*! ./SigninResponse */ "./src/SigninResponse.js"); +var _SigninResponse = __webpack_require__(/*! ./SigninResponse.js */ "./src/SigninResponse.js"); -var _SignoutRequest = __webpack_require__(/*! ./SignoutRequest */ "./src/SignoutRequest.js"); +var _SignoutRequest = __webpack_require__(/*! ./SignoutRequest.js */ "./src/SignoutRequest.js"); -var _SignoutResponse = __webpack_require__(/*! ./SignoutResponse */ "./src/SignoutResponse.js"); +var _SignoutResponse = __webpack_require__(/*! ./SignoutResponse.js */ "./src/SignoutResponse.js"); -var _SigninState = __webpack_require__(/*! ./SigninState */ "./src/SigninState.js"); +var _SigninState = __webpack_require__(/*! ./SigninState.js */ "./src/SigninState.js"); -var _State = __webpack_require__(/*! ./State */ "./src/State.js"); +var _State = __webpack_require__(/*! ./State.js */ "./src/State.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -19007,13 +19026,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _WebStorageStateStore = __webpack_require__(/*! ./WebStorageStateStore */ "./src/WebStorageStateStore.js"); +var _WebStorageStateStore = __webpack_require__(/*! ./WebStorageStateStore.js */ "./src/WebStorageStateStore.js"); -var _ResponseValidator = __webpack_require__(/*! ./ResponseValidator */ "./src/ResponseValidator.js"); +var _ResponseValidator = __webpack_require__(/*! ./ResponseValidator.js */ "./src/ResponseValidator.js"); -var _MetadataService = __webpack_require__(/*! ./MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./MetadataService.js */ "./src/MetadataService.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -19304,9 +19323,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.PopupNavigator = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _PopupWindow = __webpack_require__(/*! ./PopupWindow */ "./src/PopupWindow.js"); +var _PopupWindow = __webpack_require__(/*! ./PopupWindow.js */ "./src/PopupWindow.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -19355,9 +19374,9 @@ exports.PopupWindow = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _UrlUtility = __webpack_require__(/*! ./UrlUtility */ "./src/UrlUtility.js"); +var _UrlUtility = __webpack_require__(/*! ./UrlUtility.js */ "./src/UrlUtility.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -19513,7 +19532,7 @@ exports.RedirectNavigator = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -19564,17 +19583,17 @@ Object.defineProperty(exports, "__esModule", { }); exports.ResponseValidator = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _MetadataService = __webpack_require__(/*! ./MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./MetadataService.js */ "./src/MetadataService.js"); -var _UserInfoService = __webpack_require__(/*! ./UserInfoService */ "./src/UserInfoService.js"); +var _UserInfoService = __webpack_require__(/*! ./UserInfoService.js */ "./src/UserInfoService.js"); -var _TokenClient = __webpack_require__(/*! ./TokenClient */ "./src/TokenClient.js"); +var _TokenClient = __webpack_require__(/*! ./TokenClient.js */ "./src/TokenClient.js"); -var _ErrorResponse = __webpack_require__(/*! ./ErrorResponse */ "./src/ErrorResponse.js"); +var _ErrorResponse = __webpack_require__(/*! ./ErrorResponse.js */ "./src/ErrorResponse.js"); -var _JoseUtil = __webpack_require__(/*! ./JoseUtil */ "./src/JoseUtil.js"); +var _JoseUtil = __webpack_require__(/*! ./JoseUtil.js */ "./src/JoseUtil.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -20050,9 +20069,9 @@ exports.SessionMonitor = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _CheckSessionIFrame = __webpack_require__(/*! ./CheckSessionIFrame */ "./src/CheckSessionIFrame.js"); +var _CheckSessionIFrame = __webpack_require__(/*! ./CheckSessionIFrame.js */ "./src/CheckSessionIFrame.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -20214,11 +20233,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.SigninRequest = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _UrlUtility = __webpack_require__(/*! ./UrlUtility */ "./src/UrlUtility.js"); +var _UrlUtility = __webpack_require__(/*! ./UrlUtility.js */ "./src/UrlUtility.js"); -var _SigninState = __webpack_require__(/*! ./SigninState */ "./src/SigninState.js"); +var _SigninState = __webpack_require__(/*! ./SigninState.js */ "./src/SigninState.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -20348,7 +20367,7 @@ exports.SigninResponse = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _UrlUtility = __webpack_require__(/*! ./UrlUtility */ "./src/UrlUtility.js"); +var _UrlUtility = __webpack_require__(/*! ./UrlUtility.js */ "./src/UrlUtility.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -20437,13 +20456,13 @@ exports.SigninState = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _State2 = __webpack_require__(/*! ./State */ "./src/State.js"); +var _State2 = __webpack_require__(/*! ./State.js */ "./src/State.js"); -var _JoseUtil = __webpack_require__(/*! ./JoseUtil */ "./src/JoseUtil.js"); +var _JoseUtil = __webpack_require__(/*! ./JoseUtil.js */ "./src/JoseUtil.js"); -var _random = __webpack_require__(/*! ./random */ "./src/random.js"); +var _random = __webpack_require__(/*! ./random.js */ "./src/random.js"); var _random2 = _interopRequireDefault(_random); @@ -20567,11 +20586,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.SignoutRequest = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _UrlUtility = __webpack_require__(/*! ./UrlUtility */ "./src/UrlUtility.js"); +var _UrlUtility = __webpack_require__(/*! ./UrlUtility.js */ "./src/UrlUtility.js"); -var _State = __webpack_require__(/*! ./State */ "./src/State.js"); +var _State = __webpack_require__(/*! ./State.js */ "./src/State.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -20619,25 +20638,25 @@ var SignoutRequest = exports.SignoutRequest = function SignoutRequest(_ref) { Object.defineProperty(exports, "__esModule", { - value: true + value: true }); exports.SignoutResponse = undefined; -var _UrlUtility = __webpack_require__(/*! ./UrlUtility */ "./src/UrlUtility.js"); +var _UrlUtility = __webpack_require__(/*! ./UrlUtility.js */ "./src/UrlUtility.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. var SignoutResponse = exports.SignoutResponse = function SignoutResponse(url) { - _classCallCheck(this, SignoutResponse); + _classCallCheck(this, SignoutResponse); - var values = _UrlUtility.UrlUtility.parseUrlFragment(url, "?"); + var values = _UrlUtility.UrlUtility.parseUrlFragment(url, "?"); - this.error = values.error; - this.error_description = values.error_description; - this.error_uri = values.error_uri; + this.error = values.error; + this.error_description = values.error_description; + this.error_uri = values.error_uri; - this.state = values.state; + this.state = values.state; }; /***/ }), @@ -20657,7 +20676,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.SilentRenewService = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -20725,9 +20744,9 @@ exports.State = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _random = __webpack_require__(/*! ./random */ "./src/random.js"); +var _random = __webpack_require__(/*! ./random.js */ "./src/random.js"); var _random2 = _interopRequireDefault(_random); @@ -20860,11 +20879,11 @@ exports.Timer = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); -var _Event2 = __webpack_require__(/*! ./Event */ "./src/Event.js"); +var _Event2 = __webpack_require__(/*! ./Event.js */ "./src/Event.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -20976,11 +20995,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.TokenClient = undefined; -var _JsonService = __webpack_require__(/*! ./JsonService */ "./src/JsonService.js"); +var _JsonService = __webpack_require__(/*! ./JsonService.js */ "./src/JsonService.js"); -var _MetadataService = __webpack_require__(/*! ./MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./MetadataService.js */ "./src/MetadataService.js"); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -21085,11 +21104,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.TokenRevocationClient = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _MetadataService = __webpack_require__(/*! ./MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./MetadataService.js */ "./src/MetadataService.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -21201,9 +21220,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.UrlUtility = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -21295,7 +21314,7 @@ exports.User = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -21395,11 +21414,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.UserInfoService = undefined; -var _JsonService = __webpack_require__(/*! ./JsonService */ "./src/JsonService.js"); +var _JsonService = __webpack_require__(/*! ./JsonService.js */ "./src/JsonService.js"); -var _MetadataService = __webpack_require__(/*! ./MetadataService */ "./src/MetadataService.js"); +var _MetadataService = __webpack_require__(/*! ./MetadataService.js */ "./src/MetadataService.js"); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -21461,25 +21480,25 @@ exports.UserManager = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _OidcClient2 = __webpack_require__(/*! ./OidcClient */ "./src/OidcClient.js"); +var _OidcClient2 = __webpack_require__(/*! ./OidcClient.js */ "./src/OidcClient.js"); -var _UserManagerSettings = __webpack_require__(/*! ./UserManagerSettings */ "./src/UserManagerSettings.js"); +var _UserManagerSettings = __webpack_require__(/*! ./UserManagerSettings.js */ "./src/UserManagerSettings.js"); -var _User = __webpack_require__(/*! ./User */ "./src/User.js"); +var _User = __webpack_require__(/*! ./User.js */ "./src/User.js"); -var _UserManagerEvents = __webpack_require__(/*! ./UserManagerEvents */ "./src/UserManagerEvents.js"); +var _UserManagerEvents = __webpack_require__(/*! ./UserManagerEvents.js */ "./src/UserManagerEvents.js"); -var _SilentRenewService = __webpack_require__(/*! ./SilentRenewService */ "./src/SilentRenewService.js"); +var _SilentRenewService = __webpack_require__(/*! ./SilentRenewService.js */ "./src/SilentRenewService.js"); -var _SessionMonitor = __webpack_require__(/*! ./SessionMonitor */ "./src/SessionMonitor.js"); +var _SessionMonitor = __webpack_require__(/*! ./SessionMonitor.js */ "./src/SessionMonitor.js"); -var _TokenRevocationClient = __webpack_require__(/*! ./TokenRevocationClient */ "./src/TokenRevocationClient.js"); +var _TokenRevocationClient = __webpack_require__(/*! ./TokenRevocationClient.js */ "./src/TokenRevocationClient.js"); -var _TokenClient = __webpack_require__(/*! ./TokenClient */ "./src/TokenClient.js"); +var _TokenClient = __webpack_require__(/*! ./TokenClient.js */ "./src/TokenClient.js"); -var _JoseUtil = __webpack_require__(/*! ./JoseUtil */ "./src/JoseUtil.js"); +var _JoseUtil = __webpack_require__(/*! ./JoseUtil.js */ "./src/JoseUtil.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -22112,11 +22131,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.UserManagerEvents = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _AccessTokenEvents2 = __webpack_require__(/*! ./AccessTokenEvents */ "./src/AccessTokenEvents.js"); +var _AccessTokenEvents2 = __webpack_require__(/*! ./AccessTokenEvents.js */ "./src/AccessTokenEvents.js"); -var _Event = __webpack_require__(/*! ./Event */ "./src/Event.js"); +var _Event = __webpack_require__(/*! ./Event.js */ "./src/Event.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -22234,19 +22253,19 @@ exports.UserManagerSettings = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _OidcClientSettings2 = __webpack_require__(/*! ./OidcClientSettings */ "./src/OidcClientSettings.js"); +var _OidcClientSettings2 = __webpack_require__(/*! ./OidcClientSettings.js */ "./src/OidcClientSettings.js"); -var _RedirectNavigator = __webpack_require__(/*! ./RedirectNavigator */ "./src/RedirectNavigator.js"); +var _RedirectNavigator = __webpack_require__(/*! ./RedirectNavigator.js */ "./src/RedirectNavigator.js"); -var _PopupNavigator = __webpack_require__(/*! ./PopupNavigator */ "./src/PopupNavigator.js"); +var _PopupNavigator = __webpack_require__(/*! ./PopupNavigator.js */ "./src/PopupNavigator.js"); -var _IFrameNavigator = __webpack_require__(/*! ./IFrameNavigator */ "./src/IFrameNavigator.js"); +var _IFrameNavigator = __webpack_require__(/*! ./IFrameNavigator.js */ "./src/IFrameNavigator.js"); -var _WebStorageStateStore = __webpack_require__(/*! ./WebStorageStateStore */ "./src/WebStorageStateStore.js"); +var _WebStorageStateStore = __webpack_require__(/*! ./WebStorageStateStore.js */ "./src/WebStorageStateStore.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -22436,9 +22455,9 @@ Object.defineProperty(exports, "__esModule", { }); exports.WebStorageStateStore = undefined; -var _Log = __webpack_require__(/*! ./Log */ "./src/Log.js"); +var _Log = __webpack_require__(/*! ./Log.js */ "./src/Log.js"); -var _Global = __webpack_require__(/*! ./Global */ "./src/Global.js"); +var _Global = __webpack_require__(/*! ./Global.js */ "./src/Global.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. @@ -22586,4 +22605,4 @@ module.exports = __webpack_require__(/*! ./index.js */"./index.js"); /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9PaWRjL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL09pZGMvLi9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vanNyc2FzaWduL2Rpc3QvanNyc2FzaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbGliL2luZGV4LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vcmVnZXhwL2VzY2FwZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1udW1iZXItdmFsdWUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19iaW5kLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWtleXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMtaXMtcmVnZXhwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZml4LXJlLXdrcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmxhZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYXR0ZW4taW50by1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZm9yLW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ludm9rZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtcmVnZXhwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNhbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWV4cG0xLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWZyb3VuZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1mb3JjZWQtcGFtLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGVyZm9ybS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS1hbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZXBsYWNlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1wcm90by5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1odG1sLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctcGFkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctcmVwZWF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190YXNrLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VzZXItYWdlbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3ZhbGlkYXRlLWNvbGxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1leHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmpvaW4uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lm1hcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zbGljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1qc29uLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmJpbmQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFjb3NoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFzaW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNicnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY2x6MzIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY29zaC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5mcm91bmQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaW11bC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxMC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpZ24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2luaC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnRydW5jLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtZmluaXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnBhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuYXBwbHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5oYXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuaXMtZXh0ZW5zaWJsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnNldC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJpZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYm9sZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5maXhlZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmF3LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmVwZWF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc21hbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5kYXRhLXZpZXcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0NjQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmludDE2LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1jbGFtcGVkLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1zZXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5mbGF0dGVuLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lmdsb2JhbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC5vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguY2xhbXAuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVnLXBlci1yYWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5mc2NhbGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaWFkZGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaW11bGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaXN1YmguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkLXBlci1kZWcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zaWduYml0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLWdldHRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYnNlcnZhYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtb3duLW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lm1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLmF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLm9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5mcm9tLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnRpbWVycy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc2hpbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vT2lkYy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYyBzeW5jIiwid2VicGFjazovL09pZGMvLi9zcmMvQWNjZXNzVG9rZW5FdmVudHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9DaGVja1Nlc3Npb25JRnJhbWUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Db3Jkb3ZhSUZyYW1lTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvQ29yZG92YVBvcHVwTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvQ29yZG92YVBvcHVwV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvRXJyb3JSZXNwb25zZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL0V2ZW50LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvR2xvYmFsLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSUZyYW1lTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSUZyYW1lV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSW5NZW1vcnlXZWJTdG9yYWdlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSm9zZVV0aWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Kc29uU2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL0xvZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL01ldGFkYXRhU2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL09pZGNDbGllbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9PaWRjQ2xpZW50U2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Qb3B1cE5hdmlnYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1BvcHVwV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvUmVkaXJlY3ROYXZpZ2F0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9SZXNwb25zZVZhbGlkYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1Nlc3Npb25Nb25pdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvU2lnbmluUmVxdWVzdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpZ25pblJlc3BvbnNlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvU2lnbmluU3RhdGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9TaWdub3V0UmVxdWVzdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpZ25vdXRSZXNwb25zZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpbGVudFJlbmV3U2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1N0YXRlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVGltZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Ub2tlbkNsaWVudC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1Rva2VuUmV2b2NhdGlvbkNsaWVudC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1VybFV0aWxpdHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Vc2VyLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVXNlckluZm9TZXJ2aWNlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVXNlck1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Vc2VyTWFuYWdlckV2ZW50cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1VzZXJNYW5hZ2VyU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9XZWJTdG9yYWdlU3RhdGVTdG9yZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL3JhbmRvbS5qcyJdLCJuYW1lcyI6WyJMb2ciLCJPaWRjQ2xpZW50IiwiT2lkY0NsaWVudFNldHRpbmdzIiwiV2ViU3RvcmFnZVN0YXRlU3RvcmUiLCJJbk1lbW9yeVdlYlN0b3JhZ2UiLCJVc2VyTWFuYWdlciIsIkFjY2Vzc1Rva2VuRXZlbnRzIiwiTWV0YWRhdGFTZXJ2aWNlIiwiQ29yZG92YVBvcHVwTmF2aWdhdG9yIiwiQ29yZG92YUlGcmFtZU5hdmlnYXRvciIsIkNoZWNrU2Vzc2lvbklGcmFtZSIsIlRva2VuUmV2b2NhdGlvbkNsaWVudCIsIlNlc3Npb25Nb25pdG9yIiwiR2xvYmFsIiwiVXNlciIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsIndpbmRvdyIsIllBSE9PIiwidW5kZWZpbmVkIiwibGFuZyIsImV4dGVuZCIsImciLCJoIiwiZiIsIkVycm9yIiwiZCIsInByb3RvdHlwZSIsImNvbnN0cnVjdG9yIiwic3VwZXJjbGFzcyIsIk9iamVjdCIsImIiLCJlIiwiYyIsInRlc3QiLCJqIiwiaSIsImxlbmd0aCIsImwiLCJrIiwiYSIsIkNyeXB0b0pTIiwibGliIiwiQmFzZSIsIm4iLCJwIiwibyIsIm1peEluIiwiaGFzT3duUHJvcGVydHkiLCJpbml0IiwiJHN1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjcmVhdGUiLCJ0b1N0cmluZyIsImNsb25lIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsInN0cmluZ2lmeSIsImNvbmNhdCIsInQiLCJxIiwicyIsImNsYW1wIiwiciIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJwdXNoIiwibSIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiTGF0aW4xIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiY2hhckNvZGVBdCIsIlV0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0iLCJyZXNldCIsIl9kYXRhIiwiX25EYXRhQnl0ZXMiLCJfYXBwZW5kIiwiX3Byb2Nlc3MiLCJ3IiwieCIsImJsb2NrU2l6ZSIsInYiLCJ1IiwibWF4IiwiX21pbkJ1ZmZlclNpemUiLCJtaW4iLCJfZG9Qcm9jZXNzQmxvY2siLCJzcGxpY2UiLCJIYXNoZXIiLCJjZmciLCJfZG9SZXNldCIsInVwZGF0ZSIsImZpbmFsaXplIiwiX2RvRmluYWxpemUiLCJfY3JlYXRlSGVscGVyIiwiX2NyZWF0ZUhtYWNIZWxwZXIiLCJITUFDIiwiYWxnbyIsIk1hdGgiLCJ4NjQiLCJXb3JkIiwiaGlnaCIsImxvdyIsInRvWDMyIiwiQmFzZTY0IiwiX21hcCIsImNoYXJBdCIsImluZGV4T2YiLCJzcXJ0IiwicG93IiwiU0hBMjU2IiwiX2hhc2giLCJmbG9vciIsIkhtYWNTSEEyNTYiLCJUIiwiZWEiLCJTSEE1MTIiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIlgiLCJLIiwiWSIsIkwiLCJaIiwiTSIsIiQiLCJOIiwiYWEiLCJPIiwiYmEiLCJQIiwiY2EiLCJRIiwieiIsIkEiLCJ5IiwiVSIsIkIiLCJSIiwiQyIsIlMiLCJEIiwiViIsIkUiLCJXIiwiZmEiLCJkYSIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiYjY0bWFwIiwiYjY0cGFkIiwiaGV4MmI2NCIsInN1YnN0cmluZyIsImI2NHRvaGV4IiwiaW50MmNoYXIiLCJiNjR0b0JBIiwiQXJyYXkiLCJkYml0cyIsImNhbmFyeSIsImpfbG0iLCJCaWdJbnRlZ2VyIiwiZnJvbU51bWJlciIsImZyb21TdHJpbmciLCJuYmkiLCJhbTEiLCJhbTIiLCJhbTMiLCJhcHBOYW1lIiwiYW0iLCJEQiIsIkRNIiwiRFYiLCJCSV9GUCIsIkZWIiwiRjEiLCJGMiIsIkJJX1JNIiwiQklfUkMiLCJyciIsInZ2IiwiaW50QXQiLCJibnBDb3B5VG8iLCJibnBGcm9tSW50IiwibmJ2IiwiZnJvbUludCIsImJucEZyb21TdHJpbmciLCJmcm9tUmFkaXgiLCJaRVJPIiwic3ViVG8iLCJibnBDbGFtcCIsImJuVG9TdHJpbmciLCJuZWdhdGUiLCJ0b1JhZGl4IiwiYm5OZWdhdGUiLCJibkFicyIsImJuQ29tcGFyZVRvIiwibmJpdHMiLCJibkJpdExlbmd0aCIsImJucERMU2hpZnRUbyIsImJucERSU2hpZnRUbyIsImJucExTaGlmdFRvIiwiYm5wUlNoaWZ0VG8iLCJibnBTdWJUbyIsImJucE11bHRpcGx5VG8iLCJhYnMiLCJibnBTcXVhcmVUbyIsImJucERpdlJlbVRvIiwiY29weVRvIiwibFNoaWZ0VG8iLCJkbFNoaWZ0VG8iLCJjb21wYXJlVG8iLCJPTkUiLCJkclNoaWZ0VG8iLCJyU2hpZnRUbyIsImJuTW9kIiwiZGl2UmVtVG8iLCJDbGFzc2ljIiwiY0NvbnZlcnQiLCJtb2QiLCJjUmV2ZXJ0IiwiY1JlZHVjZSIsImNNdWxUbyIsIm11bHRpcGx5VG8iLCJyZWR1Y2UiLCJjU3FyVG8iLCJzcXVhcmVUbyIsImNvbnZlcnQiLCJyZXZlcnQiLCJtdWxUbyIsInNxclRvIiwiYm5wSW52RGlnaXQiLCJNb250Z29tZXJ5IiwibXAiLCJpbnZEaWdpdCIsIm1wbCIsIm1waCIsInVtIiwibXQyIiwibW9udENvbnZlcnQiLCJtb250UmV2ZXJ0IiwibW9udFJlZHVjZSIsIm1vbnRTcXJUbyIsIm1vbnRNdWxUbyIsImJucElzRXZlbiIsImJucEV4cCIsImJuTW9kUG93SW50IiwiaXNFdmVuIiwiZXhwIiwiYml0TGVuZ3RoIiwibW9kUG93SW50IiwiYm5DbG9uZSIsImJuSW50VmFsdWUiLCJibkJ5dGVWYWx1ZSIsImJuU2hvcnRWYWx1ZSIsImJucENodW5rU2l6ZSIsIkxOMiIsImxvZyIsImJuU2lnTnVtIiwiYm5wVG9SYWRpeCIsInNpZ251bSIsImNodW5rU2l6ZSIsImludFZhbHVlIiwiYm5wRnJvbVJhZGl4IiwiZE11bHRpcGx5IiwiZEFkZE9mZnNldCIsImJucEZyb21OdW1iZXIiLCJ0ZXN0Qml0IiwiYml0d2lzZVRvIiwic2hpZnRMZWZ0Iiwib3Bfb3IiLCJpc1Byb2JhYmxlUHJpbWUiLCJuZXh0Qnl0ZXMiLCJiblRvQnl0ZUFycmF5IiwiYm5FcXVhbHMiLCJibk1pbiIsImJuTWF4IiwiYm5wQml0d2lzZVRvIiwib3BfYW5kIiwiYm5BbmQiLCJibk9yIiwib3BfeG9yIiwiYm5Yb3IiLCJvcF9hbmRub3QiLCJibkFuZE5vdCIsImJuTm90IiwiYm5TaGlmdExlZnQiLCJiblNoaWZ0UmlnaHQiLCJsYml0IiwiYm5HZXRMb3dlc3RTZXRCaXQiLCJjYml0IiwiYm5CaXRDb3VudCIsImJuVGVzdEJpdCIsImJucENoYW5nZUJpdCIsImJuU2V0Qml0IiwiY2hhbmdlQml0IiwiYm5DbGVhckJpdCIsImJuRmxpcEJpdCIsImJucEFkZFRvIiwiYm5BZGQiLCJhZGRUbyIsImJuU3VidHJhY3QiLCJibk11bHRpcGx5IiwiYm5TcXVhcmUiLCJibkRpdmlkZSIsImJuUmVtYWluZGVyIiwiYm5EaXZpZGVBbmRSZW1haW5kZXIiLCJibnBETXVsdGlwbHkiLCJibnBEQWRkT2Zmc2V0IiwiTnVsbEV4cCIsIm5Ob3AiLCJuTXVsVG8iLCJuU3FyVG8iLCJiblBvdyIsImJucE11bHRpcGx5TG93ZXJUbyIsImJucE11bHRpcGx5VXBwZXJUbyIsIkJhcnJldHQiLCJyMiIsInEzIiwibXUiLCJkaXZpZGUiLCJiYXJyZXR0Q29udmVydCIsImJhcnJldHRSZXZlcnQiLCJiYXJyZXR0UmVkdWNlIiwibXVsdGlwbHlVcHBlclRvIiwibXVsdGlwbHlMb3dlclRvIiwiYmFycmV0dFNxclRvIiwiYmFycmV0dE11bFRvIiwiYm5Nb2RQb3ciLCJibkdDRCIsImdldExvd2VzdFNldEJpdCIsImJucE1vZEludCIsImJuTW9kSW52ZXJzZSIsInN1YnRyYWN0IiwiYWRkIiwibG93cHJpbWVzIiwibHBsaW0iLCJibklzUHJvYmFibGVQcmltZSIsIm1vZEludCIsIm1pbGxlclJhYmluIiwiYm5wTWlsbGVyUmFiaW4iLCJzaGlmdFJpZ2h0IiwibW9kUG93IiwiYnl0ZVZhbHVlIiwic2hvcnRWYWx1ZSIsInRvQnl0ZUFycmF5IiwiZXF1YWxzIiwiYW5kIiwib3IiLCJ4b3IiLCJhbmROb3QiLCJub3QiLCJiaXRDb3VudCIsInNldEJpdCIsImNsZWFyQml0IiwiZmxpcEJpdCIsIm11bHRpcGx5IiwicmVtYWluZGVyIiwiZGl2aWRlQW5kUmVtYWluZGVyIiwibW9kSW52ZXJzZSIsImdjZCIsInNxdWFyZSIsIkFyY2ZvdXIiLCJBUkM0aW5pdCIsIkFSQzRuZXh0IiwibmV4dCIsInBybmdfbmV3c3RhdGUiLCJybmdfcHNpemUiLCJybmdfc3RhdGUiLCJybmdfcG9vbCIsInJuZ19wcHRyIiwicm5nX3NlZWRfaW50Iiwicm5nX3NlZWRfdGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiY3J5cHRvIiwibXNDcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJ1YSIsIlVpbnQ4QXJyYXkiLCJhcHBWZXJzaW9uIiwicm5nX2dldF9ieXRlIiwicm5nX2dldF9ieXRlcyIsIlNlY3VyZVJhbmRvbSIsInBhcnNlQmlnSW50IiwibGluZWJyayIsImJ5dGUySGV4IiwicGtjczFwYWQyIiwib2FlcF9tZ2YxX2FyciIsIm9hZXBfcGFkIiwiS0pVUiIsIk1lc3NhZ2VEaWdlc3QiLCJVdGlsIiwiZ2V0Q2Fub25pY2FsQWxnTmFtZSIsImdldEhhc2hMZW5ndGgiLCJoZXh0b3JzdHIiLCJoYXNoSGV4IiwicnN0cnRvaGV4IiwiUlNBS2V5IiwiZG1wMSIsImRtcTEiLCJjb2VmZiIsIlJTQVNldFB1YmxpYyIsImlzUHVibGljIiwiaXNQcml2YXRlIiwiUlNBRG9QdWJsaWMiLCJSU0FFbmNyeXB0IiwiZG9QdWJsaWMiLCJSU0FFbmNyeXB0T0FFUCIsInNldFB1YmxpYyIsImVuY3J5cHQiLCJlbmNyeXB0T0FFUCIsInR5cGUiLCJFQ0ZpZWxkRWxlbWVudEZwIiwiZmVGcEVxdWFscyIsImZlRnBUb0JpZ0ludGVnZXIiLCJmZUZwTmVnYXRlIiwiZmVGcEFkZCIsInRvQmlnSW50ZWdlciIsImZlRnBTdWJ0cmFjdCIsImZlRnBNdWx0aXBseSIsImZlRnBTcXVhcmUiLCJmZUZwRGl2aWRlIiwiRUNQb2ludEZwIiwiY3VydmUiLCJ6aW52IiwicG9pbnRGcEdldFgiLCJmcm9tQmlnSW50ZWdlciIsInBvaW50RnBHZXRZIiwicG9pbnRGcEVxdWFscyIsImlzSW5maW5pdHkiLCJwb2ludEZwSXNJbmZpbml0eSIsInBvaW50RnBOZWdhdGUiLCJwb2ludEZwQWRkIiwidHdpY2UiLCJnZXRJbmZpbml0eSIsInBvaW50RnBUd2ljZSIsInBvaW50RnBNdWx0aXBseSIsInBvaW50RnBNdWx0aXBseVR3byIsImdldFgiLCJnZXRZIiwibXVsdGlwbHlUd28iLCJFQ0N1cnZlRnAiLCJpbmZpbml0eSIsImN1cnZlRnBHZXRRIiwiY3VydmVGcEdldEEiLCJjdXJ2ZUZwR2V0QiIsImN1cnZlRnBFcXVhbHMiLCJjdXJ2ZUZwR2V0SW5maW5pdHkiLCJjdXJ2ZUZwRnJvbUJpZ0ludGVnZXIiLCJjdXJ2ZUZwRGVjb2RlUG9pbnRIZXgiLCJnZXRRIiwiZ2V0QSIsImdldEIiLCJkZWNvZGVQb2ludEhleCIsImdldEJ5dGVMZW5ndGgiLCJnZXRFbmNvZGVkIiwidG9CeXRlQXJyYXlVbnNpZ25lZCIsInVuc2hpZnQiLCJkZWNvZGVGcm9tIiwiZGVjb2RlRnJvbUhleCIsImFkZDJEIiwidHdpY2UyRCIsInZhbHVlT2YiLCJtdWx0aXBseTJEIiwiaXNPbkN1cnZlIiwidmFsaWRhdGUiLCJqc29uUGFyc2UiLCJSZWdFeHAiLCJtYXRjaCIsInJlcGxhY2UiLCJzaGlmdCIsImFzbjEiLCJBU04xVXRpbCIsImludGVnZXJUb0J5dGVIZXgiLCJiaWdJbnRUb01pblR3b3NDb21wbGVtZW50c0hleCIsImdldFBFTVN0cmluZ0Zyb21IZXgiLCJoZXh0b3BlbSIsIm5ld09iamVjdCIsIkRFUkJvb2xlYW4iLCJERVJJbnRlZ2VyIiwiREVSQml0U3RyaW5nIiwiREVST2N0ZXRTdHJpbmciLCJERVJOdWxsIiwiREVST2JqZWN0SWRlbnRpZmllciIsIkRFUkVudW1lcmF0ZWQiLCJERVJVVEY4U3RyaW5nIiwiREVSTnVtZXJpY1N0cmluZyIsIkRFUlByaW50YWJsZVN0cmluZyIsIkRFUlRlbGV0ZXhTdHJpbmciLCJERVJJQTVTdHJpbmciLCJERVJVVENUaW1lIiwiREVSR2VuZXJhbGl6ZWRUaW1lIiwiREVSU2VxdWVuY2UiLCJERVJTZXQiLCJERVJUYWdnZWRPYmplY3QiLCJrZXlzIiwiYXJyYXkiLCJ0YWciLCJleHBsaWNpdCIsIm9iaiIsImpzb25Ub0FTTjFIRVgiLCJnZXRFbmNvZGVkSGV4Iiwib2lkSGV4VG9JbnQiLCJvaWRJbnRUb0hleCIsInNwbGl0IiwiQVNOMU9iamVjdCIsImdldExlbmd0aEhleEZyb21WYWx1ZSIsImhWIiwiaFRMViIsImlzTW9kaWZpZWQiLCJnZXRGcmVzaFZhbHVlSGV4IiwiaEwiLCJoVCIsImdldFZhbHVlSGV4IiwiREVSQWJzdHJhY3RTdHJpbmciLCJnZXRTdHJpbmciLCJzZXRTdHJpbmciLCJ1dGY4dG9oZXgiLCJ0b0xvd2VyQ2FzZSIsInNldFN0cmluZ0hleCIsInN0ciIsImhleCIsIkRFUkFic3RyYWN0VGltZSIsImxvY2FsRGF0ZVRvVVRDIiwidXRjIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJmb3JtYXREYXRlIiwiemVyb1BhZGRpbmciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJzdG9oZXgiLCJzZXRCeURhdGVWYWx1ZSIsIlVUQyIsInNldEJ5RGF0ZSIsIkRFUkFic3RyYWN0U3RydWN0dXJlZCIsInNldEJ5QVNOMU9iamVjdEFycmF5IiwiYXNuMUFycmF5IiwiYXBwZW5kQVNOMU9iamVjdCIsInNldEJ5QmlnSW50ZWdlciIsInNldEJ5SW50ZWdlciIsInNldFZhbHVlSGV4IiwiYmlnaW50Iiwic2V0SGV4VmFsdWVJbmNsdWRpbmdVbnVzZWRCaXRzIiwic2V0VW51c2VkQml0c0FuZEhleFZhbHVlIiwic2V0QnlCaW5hcnlTdHJpbmciLCJzZXRCeUJvb2xlYW5BcnJheSIsIm5ld0ZhbHNlQXJyYXkiLCJiaW4iLCJzZXRWYWx1ZU9pZFN0cmluZyIsInNldFZhbHVlTmFtZSIsIng1MDkiLCJPSUQiLCJuYW1lMm9pZCIsIm9pZCIsIm5hbWUiLCJkYXRlIiwid2l0aE1pbGxpcyIsIm1pbGxpcyIsInNvcnRGbGFnIiwic29ydCIsInNvcnRmbGFnIiwiaXNFeHBsaWNpdCIsImFzbjFPYmplY3QiLCJzZXRBU04xT2JqZWN0IiwiQVNOMUhFWCIsImdldExibGVuIiwiZ2V0TCIsImdldFZibGVuIiwiZ2V0VmlkeCIsImdldFYiLCJnZXRUTFYiLCJnZXROZXh0U2libGluZ0lkeCIsImdldENoaWxkSWR4IiwiZ2V0TnRoQ2hpbGRJZHgiLCJnZXRJZHhieUxpc3QiLCJnZXRUTFZieUxpc3QiLCJnZXRWYnlMaXN0IiwiaGV4dG9vaWRzdHIiLCJkdW1wIiwib21taXRfbG9uZ19vY3RldCIsImlzQVNOMUhFWCIsIm9pZDJuYW1lIiwiaGV4dG91dGY4Iiwib2lkbmFtZSIsIkpTT04iLCJ4NTA5RXh0TmFtZSIsImlzSGV4IiwiQmFzZTY0eCIsInN0b0JBIiwiQkF0b3MiLCJCQXRvaGV4Iiwic3RvYjY0Iiwic3RvYjY0dSIsImI2NHRvYjY0dSIsImI2NHV0b3MiLCJiNjR1dG9iNjQiLCJoZXh0b2I2NHUiLCJiNjR1dG9oZXgiLCJ1dGY4dG9iNjR1IiwiYjY0dXRvdXRmOCIsIkJ1ZmZlciIsInVyaWNtcHRvaGV4IiwiZW5jb2RlVVJJQ29tcG9uZW50QWxsIiwiaGV4dG91cmljbXAiLCJ1dGY4dG9iNjQiLCJiNjR0b3V0ZjgiLCJoZXh0b2I2NCIsImhleHRvYjY0bmwiLCJiNjRubHRvaGV4IiwicGVtdG9oZXgiLCJoZXh0b0FycmF5QnVmZmVyIiwiQXJyYXlCdWZmZXIiLCJEYXRhVmlldyIsInNldFVpbnQ4IiwiQXJyYXlCdWZmZXJ0b2hleCIsImJ5dGVMZW5ndGgiLCJnZXRVaW50OCIsInp1bHV0b21zZWMiLCJ6dWx1dG9zZWMiLCJ6dWx1dG9kYXRlIiwiZGF0ZXRvenVsdSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImlwdjZ0b2hleCIsInJlcGVhdCIsImhleHRvaXB2NiIsImhleHRvaXAiLCJpcHRvaGV4IiwibmV3bGluZV90b1VuaXgiLCJuZXdsaW5lX3RvRG9zIiwiaXNJbnRlZ2VyIiwiaXNCYXNlNjQiLCJpc0Jhc2U2NFVSTCIsImlzSW50ZWdlckFycmF5IiwiaGV4dG9wb3NoZXgiLCJpbnRhcnlzdHJ0b2hleCIsIm1hcCIsInN0cmRpZmZpZHgiLCJESUdFU1RJTkZPSEVBRCIsInNoYTEiLCJzaGEyMjQiLCJzaGEyNTYiLCJzaGEzODQiLCJzaGE1MTIiLCJtZDIiLCJtZDUiLCJyaXBlbWQxNjAiLCJERUZBVUxUUFJPVklERVIiLCJobWFjbWQ1IiwiaG1hY3NoYTEiLCJobWFjc2hhMjI0IiwiaG1hY3NoYTI1NiIsImhtYWNzaGEzODQiLCJobWFjc2hhNTEyIiwiaG1hY3JpcGVtZDE2MCIsIk1ENXdpdGhSU0EiLCJTSEExd2l0aFJTQSIsIlNIQTIyNHdpdGhSU0EiLCJTSEEyNTZ3aXRoUlNBIiwiU0hBMzg0d2l0aFJTQSIsIlNIQTUxMndpdGhSU0EiLCJSSVBFTUQxNjB3aXRoUlNBIiwiTUQ1d2l0aEVDRFNBIiwiU0hBMXdpdGhFQ0RTQSIsIlNIQTIyNHdpdGhFQ0RTQSIsIlNIQTI1NndpdGhFQ0RTQSIsIlNIQTM4NHdpdGhFQ0RTQSIsIlNIQTUxMndpdGhFQ0RTQSIsIlJJUEVNRDE2MHdpdGhFQ0RTQSIsIlNIQTF3aXRoRFNBIiwiU0hBMjI0d2l0aERTQSIsIlNIQTI1NndpdGhEU0EiLCJNRDV3aXRoUlNBYW5kTUdGMSIsIlNIQTF3aXRoUlNBYW5kTUdGMSIsIlNIQTIyNHdpdGhSU0FhbmRNR0YxIiwiU0hBMjU2d2l0aFJTQWFuZE1HRjEiLCJTSEEzODR3aXRoUlNBYW5kTUdGMSIsIlNIQTUxMndpdGhSU0FhbmRNR0YxIiwiUklQRU1EMTYwd2l0aFJTQWFuZE1HRjEiLCJDUllQVE9KU01FU1NBR0VESUdFU1ROQU1FIiwiTUQ1IiwiU0hBMSIsIlNIQTIyNCIsIlJJUEVNRDE2MCIsImdldERpZ2VzdEluZm9IZXgiLCJnZXRQYWRkZWREaWdlc3RJbmZvSGV4IiwiaGFzaFN0cmluZyIsImFsZyIsImRpZ2VzdFN0cmluZyIsImRpZ2VzdEhleCIsInByb3YiLCJzaGEyNTZIZXgiLCJzaGE1MTJIZXgiLCJTRUNVUkVSQU5ET01HRU4iLCJnZXRSYW5kb21IZXhPZk5ieXRlcyIsImdldFJhbmRvbUJpZ0ludGVnZXJPZk5ieXRlcyIsImdldFJhbmRvbUhleE9mTmJpdHMiLCJnZXRSYW5kb21CaWdJbnRlZ2VyT2ZOYml0cyIsImdldFJhbmRvbUJpZ0ludGVnZXJaZXJvVG9NYXgiLCJnZXRSYW5kb21CaWdJbnRlZ2VyTWluVG9NYXgiLCJzZXRBbGdBbmRQcm92aWRlciIsIm1kIiwidXBkYXRlU3RyaW5nIiwidXBkYXRlSGV4IiwiZGlnZXN0Iiwic2pjbCIsImhhc2giLCJjb2RlYyIsInRvQml0cyIsImZyb21CaXRzIiwiYWxnTmFtZSIsInByb3ZOYW1lIiwiSEFTSExFTkdUSCIsIk1hYyIsImFsZ1Byb3YiLCJtYWMiLCJwYXNzIiwiZG9GaW5hbCIsImRvRmluYWxTdHJpbmciLCJkb0ZpbmFsSGV4Iiwic2V0UGFzc3dvcmQiLCJ1dGY4IiwicnN0ciIsImI2NCIsImI2NHUiLCJTaWduYXR1cmUiLCJfc2V0QWxnTmFtZXMiLCJtZEFsZ05hbWUiLCJwdWJrZXlBbGdOYW1lIiwiX3plcm9QYWRkaW5nT2ZTaWduYXR1cmUiLCJLRVlVVElMIiwiZ2V0S2V5IiwicHJ2S2V5Iiwic3RhdGUiLCJwdWJLZXkiLCJzaWduIiwic0hhc2hIZXgiLCJlY3BydmhleCIsImVjY3VydmVuYW1lIiwiRUNEU0EiLCJoU2lnbiIsInNpZ25IZXgiLCJzaWduV2l0aE1lc3NhZ2VIYXNoUFNTIiwicHNzU2FsdExlbiIsInNpZ25XaXRoTWVzc2FnZUhhc2giLCJEU0EiLCJzaWduU3RyaW5nIiwidmVyaWZ5IiwiZWNwdWJoZXgiLCJ2ZXJpZnlIZXgiLCJ2ZXJpZnlXaXRoTWVzc2FnZUhhc2hQU1MiLCJ2ZXJpZnlXaXRoTWVzc2FnZUhhc2giLCJhbGdQcm92TmFtZSIsImluaXRQYXJhbXMiLCJwc3NzYWx0bGVuIiwicHJ2a2V5cGVtIiwicHJ2a2V5cGFzIiwiQ2lwaGVyIiwiZ2V0QWxnQnlLZXlBbmROYW1lIiwiZGVjcnlwdCIsImRlY3J5cHRPQUVQIiwib2lkaGV4Mm5hbWUiLCJnZXRCaWdSYW5kb20iLCJzZXROYW1lZEN1cnZlIiwiZWNwYXJhbXMiLCJFQ1BhcmFtZXRlckRCIiwiZ2V0QnlOYW1lIiwicHJ2S2V5SGV4IiwicHViS2V5SGV4IiwiY3VydmVOYW1lIiwic2V0UHJpdmF0ZUtleUhleCIsInNldFB1YmxpY0tleUhleCIsImdldFB1YmxpY0tleVhZSGV4Iiwia2V5bGVuIiwiZ2V0U2hvcnROSVNUUEN1cnZlTmFtZSIsImdlbmVyYXRlS2V5UGFpckhleCIsImJpUlNTaWdUb0FTTjFTaWciLCJmcm9tQnl0ZUFycmF5VW5zaWduZWQiLCJzZXJpYWxpemVTaWciLCJwYXJzZVNpZ0hleCIsInZlcmlmeVJhdyIsIkJpdGNvaW4iLCJpc0FycmF5IiwicGFyc2VTaWciLCJ0b0J5dGVBcnJheVNpZ25lZCIsInBhcnNlU2lnQ29tcGFjdCIsInJlYWRQS0NTNVBydktleUhleCIsImdldE5hbWUiLCJyZWFkUEtDUzhQcnZLZXlIZXgiLCJyZWFkUEtDUzhQdWJLZXlIZXgiLCJyZWFkQ2VydFB1YktleUhleCIsInBydiIsInB1YiIsInBhcnNlU2lnSGV4SW5IZXhSUyIsImFzbjFTaWdUb0NvbmNhdFNpZyIsImNvbmNhdFNpZ1RvQVNOMVNpZyIsImhleFJTU2lnVG9BU04xU2lnIiwicmVnaXN0IiwiQUVTIiwiVHJpcGxlREVTIiwiREVTIiwia2V5IiwiaXYiLCJjaXBoZXJ0ZXh0IiwicHJvYyIsImVwcm9jIiwiaXZsZW4iLCJjaXBoZXIiLCJpdnNhbHQiLCJkYXRhIiwia2V5aGV4IiwiaXZoZXgiLCJ2ZXJzaW9uIiwicGFyc2VQS0NTNVBFTSIsImdldEtleUFuZFVudXNlZEl2QnlQYXNzY29kZUFuZEl2c2FsdCIsImRlY3J5cHRLZXlCNjQiLCJnZXREZWNyeXB0ZWRLZXlIZXgiLCJnZXRFbmNyeXB0ZWRQS0NTNVBFTUZyb21QcnZLZXlIZXgiLCJ0b1VwcGVyQ2FzZSIsInBhcnNlSGV4T2ZFbmNyeXB0ZWRQS0NTOCIsImVuY3J5cHRpb25TY2hlbWVBbGciLCJlbmNyeXB0aW9uU2NoZW1lSVYiLCJwYmtkZjJTYWx0IiwicGJrZGYySXRlciIsImdldFBCS0RGMktleUhleEZyb21QYXJhbSIsIlBCS0RGMiIsImtleVNpemUiLCJpdGVyYXRpb25zIiwiX2dldFBsYWluUEtDUzhIZXhGcm9tRW5jcnlwdGVkUEtDUzhQRU0iLCJnZXRLZXlGcm9tRW5jcnlwdGVkUEtDUzhQRU0iLCJnZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhIZXgiLCJwYXJzZVBsYWluUHJpdmF0ZVBLQ1M4SGV4IiwiYWxncGFyYW0iLCJhbGdvaWQiLCJrZXlpZHgiLCJnZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhQRU0iLCJfZ2V0S2V5RnJvbVB1YmxpY1BLQ1M4SGV4IiwicGFyc2VQdWJsaWNSYXdSU0FLZXlIZXgiLCJwYXJzZVB1YmxpY1BLQ1M4SGV4IiwieHkiLCJrdHkiLCJkcCIsImRxIiwiY28iLCJxaSIsInNldFByaXZhdGVFeCIsInNldFByaXZhdGUiLCJjcnYiLCJYNTA5IiwiZ2V0UHVibGljS2V5RnJvbUNlcnRIZXgiLCJnZXRQdWJsaWNLZXlGcm9tQ2VydFBFTSIsImdlbmVyYXRlS2V5cGFpciIsImdlbmVyYXRlIiwicHJ2S2V5T2JqIiwicHViS2V5T2JqIiwiZ2V0UEVNIiwiU3ViamVjdFB1YmxpY0tleUluZm8iLCJzZXEiLCJvY3RzdHIiLCJiaXRzdHIiLCJnZXRLZXlGcm9tQ1NSUEVNIiwiZ2V0S2V5RnJvbUNTUkhleCIsInBhcnNlQ1NSSGV4IiwicDhwdWJrZXloZXgiLCJnZXRKV0tGcm9tS2V5IiwiZ2V0UG9zQXJyYXlPZkNoaWxkcmVuRnJvbUhleCIsImdldEhleFZhbHVlQXJyYXlPZkNoaWxkcmVuRnJvbUhleCIsInJlYWRQcml2YXRlS2V5RnJvbVBFTVN0cmluZyIsInJlYWRQS0NTNVB1YktleUhleCIsInJlYWRDZXJ0SGV4IiwiZ2V0UHVibGljS2V5SGV4IiwiX1JFX0hFWERFQ09OTFkiLCJjb21waWxlIiwiX3JzYXNpZ25fZ2V0SGV4UGFkZGVkRGlnZXN0SW5mb0ZvclN0cmluZyIsImRvUHJpdmF0ZSIsInBzc19tZ2YxX3N0ciIsInNpZ25QU1MiLCJfcnNhc2lnbl9nZXREZWNyeXB0U2lnbmF0dXJlQkkiLCJfcnNhc2lnbl9nZXRIZXhEaWdlc3RJbmZvRnJvbVNpZyIsIl9yc2FzaWduX2dldEFsZ05hbWVBbmRIYXNoRnJvbUhleERpc2dlc3RJbmZvIiwidmVyaWZ5UFNTIiwiU0FMVF9MRU5fSExFTiIsIlNBTFRfTEVOX01BWCIsIlNBTFRfTEVOX1JFQ09WRVIiLCJmb2Zmc2V0IiwiYUV4dEluZm8iLCJnZXRWZXJzaW9uIiwiZ2V0U2VyaWFsTnVtYmVySGV4IiwiZ2V0U2lnbmF0dXJlQWxnb3JpdGhtRmllbGQiLCJnZXRJc3N1ZXJIZXgiLCJnZXRJc3N1ZXJTdHJpbmciLCJoZXgyZG4iLCJnZXRTdWJqZWN0SGV4IiwiZ2V0U3ViamVjdFN0cmluZyIsImdldE5vdEJlZm9yZSIsImdldE5vdEFmdGVyIiwiZ2V0UHVibGljS2V5SWR4IiwiZ2V0UHVibGljS2V5Q29udGVudElkeCIsImdldFB1YmxpY0tleSIsImdldFNpZ25hdHVyZUFsZ29yaXRobU5hbWUiLCJnZXRTaWduYXR1cmVWYWx1ZUhleCIsInZlcmlmeVNpZ25hdHVyZSIsInBhcnNlRXh0IiwiY3JpdGljYWwiLCJ2aWR4IiwiZ2V0RXh0SW5mbyIsImdldEV4dEJhc2ljQ29uc3RyYWludHMiLCJjQSIsInBhdGhMZW4iLCJnZXRFeHRLZXlVc2FnZUJpbiIsImdldEV4dEtleVVzYWdlU3RyaW5nIiwiS0VZVVNBR0VfTkFNRSIsImdldEV4dFN1YmplY3RLZXlJZGVudGlmaWVyIiwiZ2V0RXh0QXV0aG9yaXR5S2V5SWRlbnRpZmllciIsImtpZCIsImdldEV4dEV4dEtleVVzYWdlTmFtZSIsImdldEV4dFN1YmplY3RBbHROYW1lIiwiZ2V0RXh0U3ViamVjdEFsdE5hbWUyIiwiZ2V0RXh0Q1JMRGlzdHJpYnV0aW9uUG9pbnRzVVJJIiwiZ2V0RXh0QUlBSW5mbyIsIm9jc3AiLCJjYWlzc3VlciIsImdldEV4dENlcnRpZmljYXRlUG9saWNpZXMiLCJpZCIsImNwcyIsInVub3RpY2UiLCJyZWFkQ2VydFBFTSIsImdldEluZm8iLCJoZXgycmRuIiwiaGV4MmF0dHJUeXBlVmFsdWUiLCJvaWQyYXR5cGUiLCJnZXRQdWJsaWNLZXlJbmZvUHJvcE9mQ2VydFBFTSIsImp3cyIsIkpXUyIsImlzU2FmZUpTT05TdHJpbmciLCJwYXJzZUpXUyIsInBhcnNlZEpXUyIsInNpZ3ZhbEgiLCJoZWFkQjY0VSIsInBheWxvYWRCNjRVIiwic2lndmFsQjY0VSIsInNpIiwic2lndmFsQkkiLCJoZWFkUyIsInBheWxvYWRTIiwicmVhZFNhZmVKU09OU3RyaW5nIiwiandzYWxnMnNpZ2FsZyIsImhBU04xU2lnIiwiaGVhZGVyT2JqIiwicGF5bG9hZE9iaiIsImhlYWRlclBQIiwicGF5bG9hZFBQIiwic2lnSGV4IiwidmVyaWZ5SldUIiwiaW5BcnJheSIsImluY2x1ZGVkQXJyYXkiLCJpc3MiLCJzdWIiLCJhdWQiLCJJbnREYXRlIiwiZ2V0Tm93IiwidmVyaWZ5QXQiLCJncmFjZVBlcmlvZCIsIm5iZiIsImlhdCIsImp0aSIsIkhTMjU2IiwiSFMzODQiLCJIUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIkVTMjU2IiwiRVMzODQiLCJQUzI1NiIsIlBTMzg0IiwiUFM1MTIiLCJub25lIiwiZ2V0RW5jb2RlZFNpZ25hdHVyZVZhbHVlRnJvbUpXUyIsImdldEpXS3RodW1icHJpbnQiLCJnZXQiLCJnZXRadWx1IiwiaW50RGF0ZTJVVENTdHJpbmciLCJ0b1VUQ1N0cmluZyIsImludERhdGUyWnVsdSIsImV4cG9ydHMiLCJEZWZhdWx0QWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUiLCJhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSIsImFjY2Vzc1Rva2VuRXhwaXJpbmdUaW1lciIsIlRpbWVyIiwiYWNjZXNzVG9rZW5FeHBpcmVkVGltZXIiLCJfYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUiLCJfYWNjZXNzVG9rZW5FeHBpcmluZyIsIl9hY2Nlc3NUb2tlbkV4cGlyZWQiLCJsb2FkIiwiY29udGFpbmVyIiwiYWNjZXNzX3Rva2VuIiwiZXhwaXJlc19pbiIsImR1cmF0aW9uIiwiZGVidWciLCJleHBpcmluZyIsImNhbmNlbCIsImV4cGlyZWQiLCJ1bmxvYWQiLCJhZGRBY2Nlc3NUb2tlbkV4cGlyaW5nIiwiY2IiLCJhZGRIYW5kbGVyIiwicmVtb3ZlQWNjZXNzVG9rZW5FeHBpcmluZyIsInJlbW92ZUhhbmRsZXIiLCJhZGRBY2Nlc3NUb2tlbkV4cGlyZWQiLCJyZW1vdmVBY2Nlc3NUb2tlbkV4cGlyZWQiLCJEZWZhdWx0SW50ZXJ2YWwiLCJjYWxsYmFjayIsImNsaWVudF9pZCIsInVybCIsImludGVydmFsIiwic3RvcE9uRXJyb3IiLCJfY2FsbGJhY2siLCJfY2xpZW50X2lkIiwiX3VybCIsIl9pbnRlcnZhbCIsIl9zdG9wT25FcnJvciIsImlkeCIsIl9mcmFtZV9vcmlnaW4iLCJfZnJhbWUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInZpc2liaWxpdHkiLCJwb3NpdGlvbiIsImRpc3BsYXkiLCJ3aWR0aCIsImhlaWdodCIsInNyYyIsIlByb21pc2UiLCJyZXNvbHZlIiwib25sb2FkIiwiYm9keSIsImFwcGVuZENoaWxkIiwiX2JvdW5kTWVzc2FnZUV2ZW50IiwiX21lc3NhZ2UiLCJiaW5kIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9yaWdpbiIsInNvdXJjZSIsImNvbnRlbnRXaW5kb3ciLCJlcnJvciIsInN0b3AiLCJzdGFydCIsInNlc3Npb25fc3RhdGUiLCJfc2Vzc2lvbl9zdGF0ZSIsInNlbmQiLCJwb3N0TWVzc2FnZSIsIl90aW1lciIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInByZXBhcmUiLCJwYXJhbXMiLCJwb3B1cFdpbmRvd0ZlYXR1cmVzIiwicG9wdXAiLCJDb3Jkb3ZhUG9wdXBXaW5kb3ciLCJEZWZhdWx0UG9wdXBGZWF0dXJlcyIsIkRlZmF1bHRQb3B1cFRhcmdldCIsIl9wcm9taXNlIiwicmVqZWN0IiwiX3Jlc29sdmUiLCJfcmVqZWN0IiwiZmVhdHVyZXMiLCJ0YXJnZXQiLCJwb3B1cFdpbmRvd1RhcmdldCIsInJlZGlyZWN0X3VyaSIsInN0YXJ0VXJsIiwiX2lzSW5BcHBCcm93c2VySW5zdGFsbGVkIiwiY29yZG92YU1ldGFkYXRhIiwic29tZSIsIm5hdmlnYXRlIiwiX2Vycm9yIiwiY29yZG92YSIsInJlcXVpcmUiLCJtZXRhZGF0YSIsIl9wb3B1cCIsIkluQXBwQnJvd3NlciIsIm9wZW4iLCJfZXhpdENhbGxiYWNrRXZlbnQiLCJfZXhpdENhbGxiYWNrIiwiX2xvYWRTdGFydENhbGxiYWNrRXZlbnQiLCJfbG9hZFN0YXJ0Q2FsbGJhY2siLCJwcm9taXNlIiwiZXZlbnQiLCJfc3VjY2VzcyIsIm1lc3NhZ2UiLCJfY2xlYW51cCIsImNsb3NlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIkVycm9yUmVzcG9uc2UiLCJlcnJvcl9kZXNjcmlwdGlvbiIsImVycm9yX3VyaSIsIkV2ZW50IiwiX25hbWUiLCJfY2FsbGJhY2tzIiwiZmluZEluZGV4IiwiaXRlbSIsInJhaXNlIiwidGltZXIiLCJoYW5kbGUiLCJ0ZXN0aW5nIiwicmVxdWVzdCIsIl90ZXN0aW5nIiwic2V0WE1MSHR0cFJlcXVlc3QiLCJuZXdSZXF1ZXN0IiwibG9jYXRpb24iLCJsb2NhbFN0b3JhZ2UiLCJzZXNzaW9uU3RvcmFnZSIsIlhNTEh0dHBSZXF1ZXN0IiwiSUZyYW1lTmF2aWdhdG9yIiwiZnJhbWUiLCJJRnJhbWVXaW5kb3ciLCJub3RpZnlQYXJlbnQiLCJEZWZhdWx0VGltZW91dCIsInRpbWVvdXQiLCJzaWxlbnRSZXF1ZXN0VGltZW91dCIsInNldFRpbWVvdXQiLCJfdGltZW91dCIsImNsZWFyVGltZW91dCIsInJlbW92ZUNoaWxkIiwiX29yaWdpbiIsInBhcmVudCIsImhyZWYiLCJwcm90b2NvbCIsImhvc3QiLCJnZXRJdGVtIiwic2V0SXRlbSIsInZhbHVlIiwicmVtb3ZlSXRlbSIsImluZGV4IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIkFsbG93ZWRTaWduaW5nQWxncyIsIkpvc2VVdGlsIiwicGFyc2VKd3QiLCJqd3QiLCJ0b2tlbiIsImhlYWRlciIsInBheWxvYWQiLCJ2YWxpZGF0ZUp3dCIsImlzc3VlciIsImF1ZGllbmNlIiwiY2xvY2tTa2V3Iiwibm93IiwiS2V5VXRpbCIsIng1YyIsIl92YWxpZGF0ZUp3dCIsInZhbGlkYXRlSnd0QXR0cmlidXRlcyIsInZhbGlkQXVkaWVuY2UiLCJhenAiLCJsb3dlck5vdyIsInVwcGVyTm93IiwidGhlbiIsImhleFRvQmFzZTY0VXJsIiwiSnNvblNlcnZpY2UiLCJhZGRpdGlvbmFsQ29udGVudFR5cGVzIiwiWE1MSHR0cFJlcXVlc3RDdG9yIiwiX2NvbnRlbnRUeXBlcyIsIl9YTUxIdHRwUmVxdWVzdCIsImdldEpzb24iLCJyZXEiLCJhbGxvd2VkQ29udGVudFR5cGVzIiwic3RhdHVzIiwiY29udGVudFR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsImZvdW5kIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJyZXNwb25zZVRleHQiLCJzdGF0dXNUZXh0Iiwib25lcnJvciIsInNldFJlcXVlc3RIZWFkZXIiLCJwb3N0Rm9ybSIsIm5vcExvZ2dlciIsImluZm8iLCJ3YXJuIiwiTk9ORSIsIkVSUk9SIiwiV0FSTiIsIklORk8iLCJERUJVRyIsImxvZ2dlciIsImxldmVsIiwiYXJncyIsImZyb20iLCJPaWRjTWV0YWRhdGFVcmxQYXRoIiwic2V0dGluZ3MiLCJKc29uU2VydmljZUN0b3IiLCJfc2V0dGluZ3MiLCJfanNvblNlcnZpY2UiLCJnZXRNZXRhZGF0YSIsIm1ldGFkYXRhVXJsIiwiZ2V0SXNzdWVyIiwiX2dldE1ldGFkYXRhUHJvcGVydHkiLCJnZXRBdXRob3JpemF0aW9uRW5kcG9pbnQiLCJnZXRVc2VySW5mb0VuZHBvaW50IiwiZ2V0VG9rZW5FbmRwb2ludCIsIm9wdGlvbmFsIiwiZ2V0Q2hlY2tTZXNzaW9uSWZyYW1lIiwiZ2V0RW5kU2Vzc2lvbkVuZHBvaW50IiwiZ2V0UmV2b2NhdGlvbkVuZHBvaW50IiwiZ2V0S2V5c0VuZHBvaW50IiwiZ2V0U2lnbmluZ0tleXMiLCJzaWduaW5nS2V5cyIsImp3a3NfdXJpIiwia2V5U2V0IiwiX21ldGFkYXRhVXJsIiwiYXV0aG9yaXR5IiwiY3JlYXRlU2lnbmluUmVxdWVzdCIsInJlc3BvbnNlX3R5cGUiLCJzY29wZSIsInByb21wdCIsIm1heF9hZ2UiLCJ1aV9sb2NhbGVzIiwiaWRfdG9rZW5faGludCIsImxvZ2luX2hpbnQiLCJhY3JfdmFsdWVzIiwicmVzb3VyY2UiLCJyZXF1ZXN0X3VyaSIsInJlc3BvbnNlX21vZGUiLCJleHRyYVF1ZXJ5UGFyYW1zIiwic3RhdGVTdG9yZSIsIlNpZ25pblJlcXVlc3QiLCJpc0NvZGUiLCJfbWV0YWRhdGFTZXJ2aWNlIiwic2lnbmluUmVxdWVzdCIsInNpZ25pblN0YXRlIiwiX3N0YXRlU3RvcmUiLCJzZXQiLCJ0b1N0b3JhZ2VTdHJpbmciLCJwcm9jZXNzU2lnbmluUmVzcG9uc2UiLCJ1c2VRdWVyeSIsImRlbGltaXRlciIsInJlc3BvbnNlIiwiU2lnbmluUmVzcG9uc2UiLCJyZW1vdmUiLCJzdG9yZWRTdGF0ZVN0cmluZyIsIlNpZ25pblN0YXRlIiwiZnJvbVN0b3JhZ2VTdHJpbmciLCJfdmFsaWRhdG9yIiwidmFsaWRhdGVTaWduaW5SZXNwb25zZSIsImNyZWF0ZVNpZ25vdXRSZXF1ZXN0IiwicG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIiwiU2lnbm91dFJlcXVlc3QiLCJzaWdub3V0U3RhdGUiLCJwcm9jZXNzU2lnbm91dFJlc3BvbnNlIiwiU2lnbm91dFJlc3BvbnNlIiwic3RhdGVLZXkiLCJTdGF0ZSIsInZhbGlkYXRlU2lnbm91dFJlc3BvbnNlIiwiY2xlYXJTdGFsZVN0YXRlIiwic3RhbGVTdGF0ZUFnZSIsInZhbGlkYXRvciIsIm1ldGFkYXRhU2VydmljZSIsIkRlZmF1bHRSZXNwb25zZVR5cGUiLCJEZWZhdWx0U2NvcGUiLCJEZWZhdWx0U3RhbGVTdGF0ZUFnZSIsIkRlZmF1bHRDbG9ja1NrZXdJblNlY29uZHMiLCJjbGllbnRfc2VjcmV0IiwiZmlsdGVyUHJvdG9jb2xDbGFpbXMiLCJsb2FkVXNlckluZm8iLCJSZXNwb25zZVZhbGlkYXRvckN0b3IiLCJSZXNwb25zZVZhbGlkYXRvciIsIk1ldGFkYXRhU2VydmljZUN0b3IiLCJfYXV0aG9yaXR5IiwiX21ldGFkYXRhIiwiX3NpZ25pbmdLZXlzIiwiX2NsaWVudF9zZWNyZXQiLCJfcmVzcG9uc2VfdHlwZSIsIl9zY29wZSIsIl9yZWRpcmVjdF91cmkiLCJfcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIiwiX3Byb21wdCIsIl9kaXNwbGF5IiwiX21heF9hZ2UiLCJfdWlfbG9jYWxlcyIsIl9hY3JfdmFsdWVzIiwiX3Jlc291cmNlIiwiX3Jlc3BvbnNlX21vZGUiLCJfZmlsdGVyUHJvdG9jb2xDbGFpbXMiLCJfbG9hZFVzZXJJbmZvIiwiX3N0YWxlU3RhdGVBZ2UiLCJfY2xvY2tTa2V3IiwiX2V4dHJhUXVlcnlQYXJhbXMiLCJQb3B1cE5hdmlnYXRvciIsIlBvcHVwV2luZG93Iiwia2VlcE9wZW4iLCJub3RpZnlPcGVuZXIiLCJDaGVja0ZvclBvcHVwQ2xvc2VkSW50ZXJ2YWwiLCJfY2hlY2tGb3JQb3B1cENsb3NlZFRpbWVyIiwiX2NoZWNrRm9yUG9wdXBDbG9zZWQiLCJfaWQiLCJmb2N1cyIsImNsb3NlZCIsIm9wZW5lciIsIlVybFV0aWxpdHkiLCJwYXJzZVVybEZyYWdtZW50IiwiUmVkaXJlY3ROYXZpZ2F0b3IiLCJQcm90b2NvbENsYWltcyIsIlVzZXJJbmZvU2VydmljZUN0b3IiLCJVc2VySW5mb1NlcnZpY2UiLCJqb3NlVXRpbCIsIlRva2VuQ2xpZW50Q3RvciIsIlRva2VuQ2xpZW50IiwiX3VzZXJJbmZvU2VydmljZSIsIl9qb3NlVXRpbCIsIl90b2tlbkNsaWVudCIsIl9wcm9jZXNzU2lnbmluUGFyYW1zIiwiX3ZhbGlkYXRlVG9rZW5zIiwiX3Byb2Nlc3NDbGFpbXMiLCJub25jZSIsImlkX3Rva2VuIiwiY29kZV92ZXJpZmllciIsImNvZGUiLCJpc09wZW5JZENvbm5lY3QiLCJwcm9maWxlIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiX21lcmdlQ2xhaW1zIiwiY2xhaW1zMSIsImNsYWltczIiLCJyZXN1bHQiLCJhc3NpZ24iLCJ2YWx1ZXMiLCJmb3JFYWNoIiwiX3Byb2Nlc3NDb2RlIiwiX3ZhbGlkYXRlSWRUb2tlbkFuZEFjY2Vzc1Rva2VuIiwiX3ZhbGlkYXRlSWRUb2tlbiIsImV4Y2hhbmdlQ29kZSIsInRva2VuUmVzcG9uc2UiLCJfdmFsaWRhdGVJZFRva2VuQXR0cmlidXRlcyIsImNsb2NrU2tld0luU2Vjb25kcyIsIl92YWxpZGF0ZUFjY2Vzc1Rva2VuIiwiX2ZpbHRlckJ5QWxnIiwiZmlsdGVyIiwiYXRfaGFzaCIsImhhc2hBbGciLCJoYXNoQml0cyIsInNoYSIsImxlZnQiLCJsZWZ0X2I2NHUiLCJ1c2VyTWFuYWdlciIsIkNoZWNrU2Vzc2lvbklGcmFtZUN0b3IiLCJfdXNlck1hbmFnZXIiLCJfQ2hlY2tTZXNzaW9uSUZyYW1lQ3RvciIsImV2ZW50cyIsImFkZFVzZXJMb2FkZWQiLCJfc3RhcnQiLCJhZGRVc2VyVW5sb2FkZWQiLCJfc3RvcCIsImdldFVzZXIiLCJ1c2VyIiwiY2F0Y2giLCJlcnIiLCJfc3ViIiwiX3NpZCIsInNpZCIsIl9jaGVja1Nlc3Npb25JRnJhbWUiLCJfY2hlY2tTZXNzaW9uSW50ZXJ2YWwiLCJfc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IiLCJxdWVyeVNlc3Npb25TdGF0dXMiLCJyYWlzZVVzZXJTaWduZWRPdXRFdmVudCIsInNlc3Npb24iLCJfcmFpc2VVc2VyU2Vzc2lvbkNoYW5nZWQiLCJfcmFpc2VVc2VyU2lnbmVkT3V0IiwiY2hlY2tTZXNzaW9uSW50ZXJ2YWwiLCJzdG9wQ2hlY2tTZXNzaW9uT25FcnJvciIsIm9pZGMiLCJpc09pZGMiLCJhZGRRdWVyeVBhcmFtIiwiY29kZV9jaGFsbGVuZ2UiLCJpc09BdXRoIiwiT2lkY1Njb3BlIiwidG9rZW5fdHlwZSIsImV4cGlyZXNfYXQiLCJzY29wZXMiLCJfbm9uY2UiLCJfY29kZV92ZXJpZmllciIsIl9jb2RlX2NoYWxsZW5nZSIsImNyZWF0ZWQiLCJzdG9yYWdlU3RyaW5nIiwiU2lsZW50UmVuZXdTZXJ2aWNlIiwiX3Rva2VuRXhwaXJpbmciLCJzaWduaW5TaWxlbnQiLCJfcmFpc2VTaWxlbnRSZW5ld0Vycm9yIiwiX2NyZWF0ZWQiLCJzdG9yYWdlIiwiYWdlIiwiY3V0b2ZmIiwiZ2V0QWxsS2V5cyIsInByb21pc2VzIiwiYWxsIiwiVGltZXJEdXJhdGlvbiIsIm5vd0Z1bmMiLCJfbm93RnVuYyIsImV4cGlyYXRpb24iLCJfdGltZXJIYW5kbGUiLCJfZXhwaXJhdGlvbiIsInRpbWVyRHVyYXRpb24iLCJkaWZmIiwiZ3JhbnRfdHlwZSIsImV4Y2hhbmdlUmVmcmVzaFRva2VuIiwicmVmcmVzaF90b2tlbiIsIkFjY2Vzc1Rva2VuVHlwZUhpbnQiLCJSZWZyZXNoVG9rZW5UeXBlSGludCIsIl9YTUxIdHRwUmVxdWVzdEN0b3IiLCJyZXZva2UiLCJyZXF1aXJlZCIsIl9yZXZva2UiLCJ4aHIiLCJnbG9iYWwiLCJsYXN0SW5kZXhPZiIsInJlZ2V4IiwiY291bnRlciIsImV4ZWMiLCJwcm9wIiwiU2lsZW50UmVuZXdTZXJ2aWNlQ3RvciIsIlNlc3Npb25Nb25pdG9yQ3RvciIsIlRva2VuUmV2b2NhdGlvbkNsaWVudEN0b3IiLCJVc2VyTWFuYWdlclNldHRpbmdzIiwiX2V2ZW50cyIsIlVzZXJNYW5hZ2VyRXZlbnRzIiwiX3NpbGVudFJlbmV3U2VydmljZSIsImF1dG9tYXRpY1NpbGVudFJlbmV3Iiwic3RhcnRTaWxlbnRSZW5ldyIsIm1vbml0b3JTZXNzaW9uIiwiX3Nlc3Npb25Nb25pdG9yIiwiX3Rva2VuUmV2b2NhdGlvbkNsaWVudCIsIl9sb2FkVXNlciIsInJlbW92ZVVzZXIiLCJzdG9yZVVzZXIiLCJzaWduaW5SZWRpcmVjdCIsIl9zaWduaW5TdGFydCIsIl9yZWRpcmVjdE5hdmlnYXRvciIsInNpZ25pblJlZGlyZWN0Q2FsbGJhY2siLCJfc2lnbmluRW5kIiwic2lnbmluUG9wdXAiLCJwb3B1cF9yZWRpcmVjdF91cmkiLCJfc2lnbmluIiwiX3BvcHVwTmF2aWdhdG9yIiwic2lnbmluUG9wdXBDYWxsYmFjayIsIl9zaWduaW5DYWxsYmFjayIsIl91c2VSZWZyZXNoVG9rZW4iLCJpbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXciLCJfc2lnbmluU2lsZW50SWZyYW1lIiwiaWRUb2tlblZhbGlkYXRpb24iLCJfdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuIiwiYXV0aF90aW1lIiwic2lsZW50X3JlZGlyZWN0X3VyaSIsIl9pZnJhbWVOYXZpZ2F0b3IiLCJzaWduaW5TaWxlbnRDYWxsYmFjayIsInF1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlIiwibmF2UmVzcG9uc2UiLCJzaWduaW5SZXNwb25zZSIsIm5hdmlnYXRvclBhcmFtcyIsInNpZ25vdXRSZWRpcmVjdCIsInBvc3RMb2dvdXRSZWRpcmVjdFVyaSIsIl9zaWdub3V0U3RhcnQiLCJzaWdub3V0UmVkaXJlY3RDYWxsYmFjayIsIl9zaWdub3V0RW5kIiwic2lnbm91dFBvcHVwIiwicG9wdXBfcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIiwiX3NpZ25vdXQiLCJzaWdub3V0UG9wdXBDYWxsYmFjayIsInJldm9rZVByb21pc2UiLCJyZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCIsIl9yZXZva2VJbnRlcm5hbCIsInNpZ25vdXRSZXF1ZXN0Iiwic2lnbm91dFJlc3BvbnNlIiwicmV2b2tlQWNjZXNzVG9rZW4iLCJzdWNjZXNzIiwiX3Jldm9rZUFjY2Vzc1Rva2VuSW50ZXJuYWwiLCJfcmV2b2tlUmVmcmVzaFRva2VuSW50ZXJuYWwiLCJhdFN1Y2Nlc3MiLCJydFN1Y2Nlc3MiLCJzdG9wU2lsZW50UmVuZXciLCJfdXNlclN0b3JlIiwiX3VzZXJTdG9yZUtleSIsInJlZGlyZWN0TmF2aWdhdG9yIiwicG9wdXBOYXZpZ2F0b3IiLCJpZnJhbWVOYXZpZ2F0b3IiLCJ1c2VyU3RvcmUiLCJfdXNlckxvYWRlZCIsIl91c2VyVW5sb2FkZWQiLCJfc2lsZW50UmVuZXdFcnJvciIsIl91c2VyU2lnbmVkT3V0IiwiX3VzZXJTZXNzaW9uQ2hhbmdlZCIsInJhaXNlRXZlbnQiLCJyZW1vdmVVc2VyTG9hZGVkIiwicmVtb3ZlVXNlclVubG9hZGVkIiwiYWRkU2lsZW50UmVuZXdFcnJvciIsInJlbW92ZVNpbGVudFJlbmV3RXJyb3IiLCJhZGRVc2VyU2lnbmVkT3V0IiwicmVtb3ZlVXNlclNpZ25lZE91dCIsImFkZFVzZXJTZXNzaW9uQ2hhbmdlZCIsInJlbW92ZVVzZXJTZXNzaW9uQ2hhbmdlZCIsIkRlZmF1bHRDaGVja1Nlc3Npb25JbnRlcnZhbCIsIkRlZmF1bHRRdWVyeVNlc3Npb25TdGF0dXNSZXNwb25zZVR5cGUiLCJzdG9yZSIsIl9wb3B1cF9yZWRpcmVjdF91cmkiLCJfcG9wdXBfcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIiwiX3BvcHVwV2luZG93RmVhdHVyZXMiLCJfcG9wdXBXaW5kb3dUYXJnZXQiLCJfc2lsZW50X3JlZGlyZWN0X3VyaSIsIl9zaWxlbnRSZXF1ZXN0VGltZW91dCIsIl9hdXRvbWF0aWNTaWxlbnRSZW5ldyIsIl9pbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXciLCJfbW9uaXRvclNlc3Npb24iLCJfcXVlcnlfc3RhdHVzX3Jlc3BvbnNlX3R5cGUiLCJfcmV2b2tlQWNjZXNzVG9rZW5PblNpZ25vdXQiLCJwcmVmaXgiLCJfc3RvcmUiLCJfcHJlZml4IiwiZ3VpZEhvbGRlciIsImd1aWRSZXNwb25zZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFF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bUQsRUFBbkQsRUFBc0QsRUFBdEQsRUFBeUQsRUFBekQsRUFBNEQsRUFBNUQsRUFBK0QsRUFBL0QsRUFBa0UsRUFBbEUsRUFBcUUsRUFBckUsRUFBd0UsR0FBeEUsRUFBNEUsR0FBNUUsRUFBZ0YsR0FBaEYsRUFBb0YsR0FBcEYsRUFBd0YsR0FBeEYsRUFBNEYsR0FBNUYsRUFBZ0csR0FBaEcsRUFBb0csR0FBcEcsRUFBd0csR0FBeEcsRUFBNEcsR0FBNUcsRUFBZ0gsR0FBaEgsRUFBb0gsR0FBcEgsRUFBd0gsR0FBeEgsRUFBNEgsR0FBNUgsRUFBZ0ksR0FBaEksRUFBb0ksR0FBcEksRUFBd0ksR0FBeEksRUFBNEksR0FBNUksRUFBZ0osR0FBaEosRUFBb0osR0FBcEosRUFBd0osR0FBeEosRUFBNEosR0FBNUosRUFBZ0ssR0FBaEssRUFBb0ssR0FBcEssRUFBd0ssR0FBeEssRUFBNEssR0FBNUssRUFBZ0wsR0FBaEwsRUFBb0wsR0FBcEwsRUFBd0wsR0FBeEwsRUFBNEwsR0FBNUwsRUFBZ00sR0FBaE0sRUFBb00sR0FBcE0sRUFBd00sR0FBeE0sRUFBNE0sR0FBNU0sRUFBZ04sR0FBaE4sRUFBb04sR0FBcE4sRUFBd04sR0FBeE4sRUFBNE4sR0FBNU4sRUFBZ08sR0FBaE8sRUFBb08sR0FBcE8sRUFBd08sR0FBeE8sRUFBNE8sR0FBNU8sRUFBZ1AsR0FBaFAsRUFBb1AsR0FBcFAsRUFBd1AsR0FBeFAsRUFBNFAsR0FBNVAsRUFBZ1EsR0FBaFEsRUFBb1EsR0FBcFEsRUFBd1EsR0FBeFEsRUFBNFEsR0FBNVEsRUFBZ1IsR0FBaFIsRUFBb1IsR0FBcFIsRUFBd1IsR0FBeFIsRUFBNFIsR0FBNVIsRUFBZ1MsR0FBaFMsRUFBb1MsR0FBcFMsRUFBd1MsR0FBeFMsRUFBNFMsR0FBNVMsRUFBZ1QsR0FBaFQsRUFBb1QsR0FBcFQsRUFBd1QsR0FBeFQsRUFBNFQsR0FBNVQsRUFBZ1UsR0FBaFUsRUFBb1UsR0FBcFUsRUFBd1UsR0FBeFUsRUFBNFUsR0FBNVUsRUFBZ1YsR0FBaFYsRUFBb1YsR0FBcFYsRUFB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RUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QyxXQUFXO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDL3RCQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDLFNBQVM7QUFDM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxVQUFVO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDdEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1EQUFtRDtBQUN4RTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSx1Q0FBdUMsU0FBUztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxFQUFFO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdCQUF3QixRQUFRO0FBQ2hDO0FBQ0EscUJBQXFCLGVBQWU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURBQXVELE9BQU87QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RCxPQUFPO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpQkFBaUI7QUFDaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLFlB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsQ0FBQztBQUNEO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EsU0FBUztBQUNULEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxnQkFBZ0IsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLHNC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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ25GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDs7Ozs7Ozs7Ozs7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLDRCQUE0QjtBQUM1QixHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixtQkFBbUIsMEJBQTBCLEVBQUUsRUFBRTtBQUNsRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELGdDQUFnQztBQUN6RjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsNkVBQTZFLFlBQVk7QUFDekY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsNkNBQTZDLEVBQUU7O0FBRXhHO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxtREFBbUQ7QUFDbkQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQ0FBb0M7QUFDcEM7QUFDQSxLQUFLO0FBQ0wsd0VBQXdFO0FBQ3hFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOERBQThEO0FBQzlEO0FBQ0EsS0FBSztBQUNMLHdFQUF3RTtBQUN4RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgseUJBQXlCLHNCQUFzQixFQUFFLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsYUFBYTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsMEJBQTBCO0FBQ2hELEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCx5QkFBeUI7QUFDekIsS0FBSztBQUNMLHVCQUF1QjtBQUN2QiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDJCQUEyQjtBQUMzQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLGFBQWE7QUFDdkMsT0FBTztBQUNQOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLHVEQUF1RCw2QkFBNkIsRUFBRTtBQUN0RjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQSx1REFBdUQsWUFBWTs7QUFFbkU7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUssVUFBVSxnQkFBZ0I7O0FBRS9CO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLLFdBQVcsa0NBQWtDOztBQUVsRDtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQzs7Ozs7Ozs7Ozs7OztBQy9kckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxXQUFXO0FBQ25CO0FBQ0E7QUFDQSxRQUFRLFVBQVU7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxXQUFXO0FBQ25CO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsbUJBQW1CLHVCQUF1QixFQUFFLEVBQUU7QUFDdkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsV0FBVztBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLEdBQUc7QUFDSCx5QkFBeUI7QUFDekIsR0FBRztBQUNILHVCQUF1QjtBQUN2QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsaUJBQWlCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNuUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0pBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxzQkFBc0I7QUFDaEYsa0ZBQWtGLHdCQUF3QjtBQUMxRzs7Ozs7Ozs7Ozs7O0FDUkE7Ozs7Ozs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNQQTtBQUNBO0FBQ0Esa0hBQW1EOztBQUVuRCw4QkFBOEIsOEJBQThCLGdCQUFnQixFQUFFLEVBQUU7Ozs7Ozs7Ozs7OztBQ0poRjtBQUNBOztBQUVBLDZCQUE2QixzSEFBOEM7O0FBRTNFOzs7Ozs7Ozs7Ozs7O0FDTEE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNURDtBQUNBOztBQUVBLDZCQUE2QixrR0FBaUM7O0FBRTlEOzs7Ozs7Ozs7Ozs7O0FDTEE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDVEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZ0JBQWdCLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxnQkFBZ0IsRUFBRTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDVkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhJQUE0RSxrQkFBa0IsRUFBRTtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxnQ0FBZ0M7QUFDdkY7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGtDQUFrQyxnQkFBZ0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ3BDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNkRDtBQUNBOztBQUVBLDZCQUE2QixpR0FBa0M7Ozs7Ozs7Ozs7Ozs7QUNIL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNYRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsV0FBVztBQUNyQjtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ3JCRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNURDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDbEJEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsVUFBVTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUMzQkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDVEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUN0QkQ7Ozs7Ozs7Ozs7OztBQ0FBO0FBQ0E7O0FBRUEsNEJBQTRCLG1CQUFtQiw2QkFBNkIsRUFBRSxFQUFFOzs7Ozs7Ozs7Ozs7QUNIaEY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNQRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDbkJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDdEJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNYRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLGNBQWM7QUFDZDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLFVBQVU7QUFDVixDQUFDOzs7Ozs7Ozs7Ozs7O0FDaEJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDakJEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNMRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ2pCRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixzQkFBc0IsdUJBQXVCLFdBQVcsSUFBSTtBQUM1RCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixtQ0FBbUM7QUFDekQsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLGdDQUFnQztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMERBQTBELGtCQUFrQjs7QUFFNUU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1Qjs7QUFFM0Msb0RBQW9ELDZCQUE2Qjs7QUFFakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDBCQUEwQixlQUFlLEVBQUU7QUFDM0MsMEJBQTBCLGdCQUFnQjtBQUMxQyxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsT0FBTyxRQUFRLGlDQUFpQztBQUNwRyxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDek9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZFQUE2RSw0QkFBNEI7O0FBRXpHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLDZGQUE2RjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNKRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNKRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNKRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLDRFQUE0RSxFQUFFO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUMxREE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZCQUE2QixtRUFBbUU7QUFDaEcsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ2JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ1JEO0FBQ0E7O0FBRUEsb0JBQW9CLDRGQUErQjs7Ozs7Ozs7Ozs7O0FDSG5EO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7O0FBRUEsdUNBQXVDLDJIQUFrRDs7Ozs7Ozs7Ozs7O0FDSHpGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNQRDtBQUNBOztBQUVBLDRCQUE0Qiw2QkFBNkI7Ozs7Ozs7Ozs7OztBQ0h6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNSRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNWRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ2ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNWRDtBQUNBOztBQUVBLDRCQUE0Qiw2QkFBNkI7Ozs7Ozs7Ozs7OztBQ0h6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNSRDtBQUNBOztBQUVBLDRCQUE0QixtR0FBa0M7Ozs7Ozs7Ozs7OztBQ0g5RDtBQUNBOztBQUVBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7Ozs7Ozs7QUNOSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNmRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQywrREFBK0Q7QUFDekc7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDWEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsK0RBQStEO0FBQ3pHO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDWEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDUkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDckJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ2pCRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ2pCRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDUkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsNEJBQTRCO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLHVDQUF1QztBQUN2Qyx1Q0FBdUMseUJBQXlCO0FBQ2hFLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQLDBCQUEwQixhQUFhO0FBQ3ZDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSwrREFBK0QsT0FBTztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUCwwQkFBMEIsYUFBYTtBQUN2QyxLQUFLO0FBQ0w7QUFDQSxDQUFDOztBQUVELHFEQUFxRCxhQUFhLEVBQUU7O0FBRXBFLG9CQUFvQiwwQkFBMEI7O0FBRTlDOzs7Ozs7Ozs7Ozs7O0FDdE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxVQUFVLEVBQUU7QUFDMUUsS0FBSztBQUNMO0FBQ0EsOERBQThELFNBQVMsRUFBRTtBQUN6RSxLQUFLO0FBQ0w7QUFDQSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7QUNuQkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7OztBQ1hIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWM7QUFDZDtBQUNBLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0FDUEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7OztBQ2RIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWM7QUFDZDtBQUNBLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0FDbEJIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYztBQUNkO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7Ozs7Ozs7QUNoQkg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYztBQUNkO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7Ozs7Ozs7QUNQSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0FDUkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYztBQUNkO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7Ozs7Ozs7QUNmSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0FDUkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7Ozs7Ozs7Ozs7OztBQ2RIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7O0FBRUEsdUNBQXVDLDJIQUFrRDs7Ozs7Ozs7Ozs7OztBQ0h6RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNURDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUM3QkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNYRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDTkQ7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7QUNBQTtBQUNBOztBQUVBLDhCQUE4Qiw0RkFBK0I7Ozs7Ozs7Ozs7OztBQ0g3RDtBQUNBOzs7Ozs7Ozs7Ozs7QUNEQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNEQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNEQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0RBQW9ELHdCQUF3QjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDTEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDbkJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3BNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxXQUFXOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVc7O0FBRW5CO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLFdBQVc7O0FBRW5CO0FBQ0E7QUFDQSxRQUFRLFVBQVU7O0FBRWxCO0FBQ0E7Ozs7Ozs7Ozs7OztBQ25GQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNB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K0IsTUFBTSxrQkFBVjtBQUNBLFFBQUkzZCxJQUFJLENBQVI7QUFDQSxRQUFJMDhDLGVBQWUsRUFBbkI7QUFDQSxTQUFLLElBQUl2K0MsSUFBSSxDQUFiLEVBQWdCQSxJQUFJcytDLFdBQVdyK0MsTUFBL0IsRUFBdUNELEdBQXZDLEVBQTRDO0FBQ3hDLFlBQUlzK0MsV0FBV3QrQyxDQUFYLE1BQWtCLEdBQWxCLElBQXlCcytDLFdBQVd0K0MsQ0FBWCxNQUFrQixHQUEvQyxFQUFvRDtBQUNoRDtBQUNBNkIsZ0JBQUlnRCxLQUFLNUMsTUFBTCxLQUFnQixFQUFoQixHQUFxQixDQUF6QjtBQUNIOztBQUVELFlBQUlxOEMsV0FBV3QrQyxDQUFYLE1BQWtCLEdBQXRCLEVBQTJCO0FBQ3ZCdStDLDRCQUFnQi8rQixJQUFJM2QsQ0FBSixDQUFoQjtBQUNILFNBRkQsTUFFTyxJQUFJeThDLFdBQVd0K0MsQ0FBWCxNQUFrQixHQUF0QixFQUEyQjtBQUM5QjtBQUNBNkIsaUJBQUssR0FBTCxDQUY4QixDQUVwQjtBQUNWQSxpQkFBSyxHQUFMLENBSDhCLENBR3BCO0FBQ1YwOEMsNEJBQWdCLytCLElBQUkzZCxDQUFKLENBQWhCO0FBQ0gsU0FMTSxNQUtBO0FBQ0gwOEMsNEJBQWdCRCxXQUFXdCtDLENBQVgsQ0FBaEI7QUFDSDtBQUNKO0FBQ0QsV0FBT3UrQyxZQUFQO0FBQ0giLCJmaWxlIjoib2lkYy1jbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL3NyYy9Mb2cnO1xyXG5pbXBvcnQgeyBPaWRjQ2xpZW50IH0gZnJvbSAnLi9zcmMvT2lkY0NsaWVudCc7XHJcbmltcG9ydCB7IE9pZGNDbGllbnRTZXR0aW5ncyB9IGZyb20gJy4vc3JjL09pZGNDbGllbnRTZXR0aW5ncyc7XHJcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9zcmMvV2ViU3RvcmFnZVN0YXRlU3RvcmUnO1xyXG5pbXBvcnQgeyBJbk1lbW9yeVdlYlN0b3JhZ2UgfSBmcm9tICcuL3NyYy9Jbk1lbW9yeVdlYlN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBVc2VyTWFuYWdlciB9IGZyb20gJy4vc3JjL1VzZXJNYW5hZ2VyJztcclxuaW1wb3J0IHsgQWNjZXNzVG9rZW5FdmVudHMgfSBmcm9tICcuL3NyYy9BY2Nlc3NUb2tlbkV2ZW50cyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4vc3JjL01ldGFkYXRhU2VydmljZSc7XHJcbmltcG9ydCB7IENvcmRvdmFQb3B1cE5hdmlnYXRvciB9IGZyb20gJy4vc3JjL0NvcmRvdmFQb3B1cE5hdmlnYXRvcic7XHJcbmltcG9ydCB7IENvcmRvdmFJRnJhbWVOYXZpZ2F0b3IgfSBmcm9tICcuL3NyYy9Db3Jkb3ZhSUZyYW1lTmF2aWdhdG9yJztcclxuaW1wb3J0IHsgQ2hlY2tTZXNzaW9uSUZyYW1lIH0gZnJvbSAnLi9zcmMvQ2hlY2tTZXNzaW9uSUZyYW1lJztcclxuaW1wb3J0IHsgVG9rZW5SZXZvY2F0aW9uQ2xpZW50IH0gZnJvbSAnLi9zcmMvVG9rZW5SZXZvY2F0aW9uQ2xpZW50JztcclxuaW1wb3J0IHsgU2Vzc2lvbk1vbml0b3IgfSBmcm9tICcuL3NyYy9TZXNzaW9uTW9uaXRvcic7XHJcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vc3JjL0dsb2JhbCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL3NyYy9Vc2VyJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIExvZyxcclxuICAgIE9pZGNDbGllbnQsXHJcbiAgICBPaWRjQ2xpZW50U2V0dGluZ3MsXHJcbiAgICBXZWJTdG9yYWdlU3RhdGVTdG9yZSxcclxuICAgIEluTWVtb3J5V2ViU3RvcmFnZSxcclxuICAgIFVzZXJNYW5hZ2VyLFxyXG4gICAgQWNjZXNzVG9rZW5FdmVudHMsXHJcbiAgICBNZXRhZGF0YVNlcnZpY2UsXHJcbiAgICBDb3Jkb3ZhUG9wdXBOYXZpZ2F0b3IsXHJcbiAgICBDb3Jkb3ZhSUZyYW1lTmF2aWdhdG9yLFxyXG4gICAgQ2hlY2tTZXNzaW9uSUZyYW1lLFxyXG4gICAgVG9rZW5SZXZvY2F0aW9uQ2xpZW50LFxyXG4gICAgU2Vzc2lvbk1vbml0b3IsXHJcbiAgICBHbG9iYWwsXHJcbiAgICBVc2VyXHJcbn07IiwiLypcclxuICoganNyc2FzaWduKGFsbCkgOC4wLjEyICgyMDE4LTA0LTIyKSAoYykgMjAxMC0yMDE4IEtlbmppIFVydXNoaW1hIHwga2p1ci5naXRodWIuY29tL2pzcnNhc2lnbi9saWNlbnNlXHJcbiAqL1xyXG5cclxudmFyIG5hdmlnYXRvciA9IHt9O1xyXG5uYXZpZ2F0b3IudXNlckFnZW50ID0gZmFsc2U7XHJcblxyXG52YXIgd2luZG93ID0ge307XHJcblxuLyohXHJcbkNvcHlyaWdodCAoYykgMjAxMSwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuQ29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2U6XHJcbmh0dHA6Ly9kZXZlbG9wZXIueWFob28uY29tL3l1aS9saWNlbnNlLmh0bWxcclxudmVyc2lvbjogMi45LjBcclxuKi9cclxuaWYoWUFIT089PT11bmRlZmluZWQpe3ZhciBZQUhPTz17fX1ZQUhPTy5sYW5nPXtleHRlbmQ6ZnVuY3Rpb24oZyxoLGYpe2lmKCFofHwhZyl7dGhyb3cgbmV3IEVycm9yKFwiWUFIT08ubGFuZy5leHRlbmQgZmFpbGVkLCBwbGVhc2UgY2hlY2sgdGhhdCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBpbmNsdWRlZC5cIil9dmFyIGQ9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlPWgucHJvdG90eXBlO2cucHJvdG90eXBlPW5ldyBkKCk7Zy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZztnLnN1cGVyY2xhc3M9aC5wcm90b3R5cGU7aWYoaC5wcm90b3R5cGUuY29uc3RydWN0b3I9PU9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3Ipe2gucHJvdG90eXBlLmNvbnN0cnVjdG9yPWh9aWYoZil7dmFyIGI7Zm9yKGIgaW4gZil7Zy5wcm90b3R5cGVbYl09ZltiXX12YXIgZT1mdW5jdGlvbigpe30sYz1bXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXTt0cnl7aWYoL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpe2U9ZnVuY3Rpb24oaixpKXtmb3IoYj0wO2I8Yy5sZW5ndGg7Yj1iKzEpe3ZhciBsPWNbYl0saz1pW2xdO2lmKHR5cGVvZiBrPT09XCJmdW5jdGlvblwiJiZrIT1PYmplY3QucHJvdG90eXBlW2xdKXtqW2xdPWt9fX19fWNhdGNoKGEpe31lKGcucHJvdG90eXBlLGYpfX19O1xuLyohIENyeXB0b0pTIHYzLjEuMiBjb3JlLWZpeC5qc1xyXG4gKiBjb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcclxuICogKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIGNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcclxuICogVEhJUyBJUyBGSVggb2YgJ2NvcmUuanMnIHRvIGZpeCBIbWFjIGlzc3VlLlxyXG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9pc3N1ZXMvZGV0YWlsP2lkPTg0XHJcbiAqIGh0dHBzOi8vY3J5cHRvLWpzLmdvb2dsZWNvZGUuY29tL3N2bi1oaXN0b3J5L3I2NjcvYnJhbmNoZXMvMy54L3NyYy9jb3JlLmpzXHJcbiAqL1xyXG52YXIgQ3J5cHRvSlM9Q3J5cHRvSlN8fChmdW5jdGlvbihlLGcpe3ZhciBhPXt9O3ZhciBiPWEubGliPXt9O3ZhciBqPWIuQmFzZT0oZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fXJldHVybntleHRlbmQ6ZnVuY3Rpb24ocCl7bi5wcm90b3R5cGU9dGhpczt2YXIgbz1uZXcgbigpO2lmKHApe28ubWl4SW4ocCl9aWYoIW8uaGFzT3duUHJvcGVydHkoXCJpbml0XCIpKXtvLmluaXQ9ZnVuY3Rpb24oKXtvLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19by5pbml0LnByb3RvdHlwZT1vO28uJHN1cGVyPXRoaXM7cmV0dXJuIG99LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciBvPXRoaXMuZXh0ZW5kKCk7by5pbml0LmFwcGx5KG8sYXJndW1lbnRzKTtyZXR1cm4gb30saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24ocCl7Zm9yKHZhciBvIGluIHApe2lmKHAuaGFzT3duUHJvcGVydHkobykpe3RoaXNbb109cFtvXX19aWYocC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpKXt0aGlzLnRvU3RyaW5nPXAudG9TdHJpbmd9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpKTt2YXIgbD1iLldvcmRBcnJheT1qLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihvLG4pe289dGhpcy53b3Jkcz1vfHxbXTtpZihuIT1nKXt0aGlzLnNpZ0J5dGVzPW59ZWxzZXt0aGlzLnNpZ0J5dGVzPW8ubGVuZ3RoKjR9fSx0b1N0cmluZzpmdW5jdGlvbihuKXtyZXR1cm4obnx8aCkuc3RyaW5naWZ5KHRoaXMpfSxjb25jYXQ6ZnVuY3Rpb24odCl7dmFyIHE9dGhpcy53b3Jkczt2YXIgcD10LndvcmRzO3ZhciBuPXRoaXMuc2lnQnl0ZXM7dmFyIHM9dC5zaWdCeXRlczt0aGlzLmNsYW1wKCk7aWYobiU0KXtmb3IodmFyIHI9MDtyPHM7cisrKXt2YXIgbz0ocFtyPj4+Ml0+Pj4oMjQtKHIlNCkqOCkpJjI1NTtxWyhuK3IpPj4+Ml18PW88PCgyNC0oKG4rciklNCkqOCl9fWVsc2V7Zm9yKHZhciByPTA7cjxzO3IrPTQpe3FbKG4rcik+Pj4yXT1wW3I+Pj4yXX19dGhpcy5zaWdCeXRlcys9cztyZXR1cm4gdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgbz10aGlzLndvcmRzO3ZhciBuPXRoaXMuc2lnQnl0ZXM7b1tuPj4+Ml0mPTQyOTQ5NjcyOTU8PCgzMi0obiU0KSo4KTtvLmxlbmd0aD1lLmNlaWwobi80KX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgbj1qLmNsb25lLmNhbGwodGhpcyk7bi53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApO3JldHVybiBufSxyYW5kb206ZnVuY3Rpb24ocCl7dmFyIG89W107Zm9yKHZhciBuPTA7bjxwO24rPTQpe28ucHVzaCgoZS5yYW5kb20oKSo0Mjk0OTY3Mjk2KXwwKX1yZXR1cm4gbmV3IGwuaW5pdChvLHApfX0pO3ZhciBtPWEuZW5jPXt9O3ZhciBoPW0uSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24ocCl7dmFyIHI9cC53b3Jkczt2YXIgbz1wLnNpZ0J5dGVzO3ZhciBxPVtdO2Zvcih2YXIgbj0wO248bztuKyspe3ZhciBzPShyW24+Pj4yXT4+PigyNC0obiU0KSo4KSkmMjU1O3EucHVzaCgocz4+PjQpLnRvU3RyaW5nKDE2KSk7cS5wdXNoKChzJjE1KS50b1N0cmluZygxNikpfXJldHVybiBxLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHApe3ZhciBuPXAubGVuZ3RoO3ZhciBxPVtdO2Zvcih2YXIgbz0wO288bjtvKz0yKXtxW28+Pj4zXXw9cGFyc2VJbnQocC5zdWJzdHIobywyKSwxNik8PCgyNC0obyU4KSo0KX1yZXR1cm4gbmV3IGwuaW5pdChxLG4vMil9fTt2YXIgZD1tLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKHEpe3ZhciByPXEud29yZHM7dmFyIHA9cS5zaWdCeXRlczt2YXIgbj1bXTtmb3IodmFyIG89MDtvPHA7bysrKXt2YXIgcz0ocltvPj4+Ml0+Pj4oMjQtKG8lNCkqOCkpJjI1NTtuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShzKSl9cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24ocCl7dmFyIG49cC5sZW5ndGg7dmFyIHE9W107Zm9yKHZhciBvPTA7bzxuO28rKyl7cVtvPj4+Ml18PShwLmNoYXJDb2RlQXQobykmMjU1KTw8KDI0LShvJTQpKjgpfXJldHVybiBuZXcgbC5pbml0KHEsbil9fTt2YXIgYz1tLlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbihuKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZC5zdHJpbmdpZnkobikpKX1jYXRjaChvKXt0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgVVRGLTggZGF0YVwiKX19LHBhcnNlOmZ1bmN0aW9uKG4pe3JldHVybiBkLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChuKSkpfX07dmFyIGk9Yi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPWouZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IGwuaW5pdCgpO3RoaXMuX25EYXRhQnl0ZXM9MH0sX2FwcGVuZDpmdW5jdGlvbihuKXtpZih0eXBlb2Ygbj09XCJzdHJpbmdcIil7bj1jLnBhcnNlKG4pfXRoaXMuX2RhdGEuY29uY2F0KG4pO3RoaXMuX25EYXRhQnl0ZXMrPW4uc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKHcpe3ZhciBxPXRoaXMuX2RhdGE7dmFyIHg9cS53b3Jkczt2YXIgbj1xLnNpZ0J5dGVzO3ZhciB0PXRoaXMuYmxvY2tTaXplO3ZhciB2PXQqNDt2YXIgdT1uL3Y7aWYodyl7dT1lLmNlaWwodSl9ZWxzZXt1PWUubWF4KCh1fDApLXRoaXMuX21pbkJ1ZmZlclNpemUsMCl9dmFyIHM9dSp0O3ZhciByPWUubWluKHMqNCxuKTtpZihzKXtmb3IodmFyIHA9MDtwPHM7cCs9dCl7dGhpcy5fZG9Qcm9jZXNzQmxvY2soeCxwKX12YXIgbz14LnNwbGljZSgwLHMpO3Euc2lnQnl0ZXMtPXJ9cmV0dXJuIG5ldyBsLmluaXQobyxyKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgbj1qLmNsb25lLmNhbGwodGhpcyk7bi5fZGF0YT10aGlzLl9kYXRhLmNsb25lKCk7cmV0dXJuIG59LF9taW5CdWZmZXJTaXplOjB9KTt2YXIgZj1iLkhhc2hlcj1pLmV4dGVuZCh7Y2ZnOmouZXh0ZW5kKCksaW5pdDpmdW5jdGlvbihuKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQobik7dGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe2kucmVzZXQuY2FsbCh0aGlzKTt0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbihuKXt0aGlzLl9hcHBlbmQobik7dGhpcy5fcHJvY2VzcygpO3JldHVybiB0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbihuKXtpZihuKXt0aGlzLl9hcHBlbmQobil9dmFyIG89dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiBvfSxibG9ja1NpemU6NTEyLzMyLF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHAsbyl7cmV0dXJuIG5ldyBuLmluaXQobykuZmluYWxpemUocCl9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocCxvKXtyZXR1cm4gbmV3IGsuSE1BQy5pbml0KG4sbykuZmluYWxpemUocCl9fX0pO3ZhciBrPWEuYWxnbz17fTtyZXR1cm4gYX0oTWF0aCkpO1xuLypcclxuQ3J5cHRvSlMgdjMuMS4yIHg2NC1jb3JlLW1pbi5qc1xyXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcclxuKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcclxuKi9cclxuKGZ1bmN0aW9uKGcpe3ZhciBhPUNyeXB0b0pTLGY9YS5saWIsZT1mLkJhc2UsaD1mLldvcmRBcnJheSxhPWEueDY0PXt9O2EuV29yZD1lLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihiLGMpe3RoaXMuaGlnaD1iO3RoaXMubG93PWN9fSk7YS5Xb3JkQXJyYXk9ZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oYixjKXtiPXRoaXMud29yZHM9Ynx8W107dGhpcy5zaWdCeXRlcz1jIT1nP2M6OCpiLmxlbmd0aH0sdG9YMzI6ZnVuY3Rpb24oKXtmb3IodmFyIGI9dGhpcy53b3JkcyxjPWIubGVuZ3RoLGE9W10sZD0wO2Q8YztkKyspe3ZhciBlPWJbZF07YS5wdXNoKGUuaGlnaCk7YS5wdXNoKGUubG93KX1yZXR1cm4gaC5jcmVhdGUoYSx0aGlzLnNpZ0J5dGVzKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIGI9ZS5jbG9uZS5jYWxsKHRoaXMpLGM9Yi53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLGE9Yy5sZW5ndGgsZD0wO2Q8YTtkKyspY1tkXT1jW2RdLmNsb25lKCk7cmV0dXJuIGJ9fSl9KSgpO1xyXG5cbi8qXHJcbkNyeXB0b0pTIHYzLjEuMiBlbmMtYmFzZTY0LmpzXHJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xyXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxyXG4qL1xyXG4oZnVuY3Rpb24oKXt2YXIgaD1DcnlwdG9KUyxqPWgubGliLldvcmRBcnJheTtoLmVuYy5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbihiKXt2YXIgZT1iLndvcmRzLGY9Yi5zaWdCeXRlcyxjPXRoaXMuX21hcDtiLmNsYW1wKCk7Yj1bXTtmb3IodmFyIGE9MDthPGY7YSs9Mylmb3IodmFyIGQ9KGVbYT4+PjJdPj4+MjQtOCooYSU0KSYyNTUpPDwxNnwoZVthKzE+Pj4yXT4+PjI0LTgqKChhKzEpJTQpJjI1NSk8PDh8ZVthKzI+Pj4yXT4+PjI0LTgqKChhKzIpJTQpJjI1NSxnPTA7ND5nJiZhKzAuNzUqZzxmO2crKyliLnB1c2goYy5jaGFyQXQoZD4+PjYqKDMtZykmNjMpKTtpZihlPWMuY2hhckF0KDY0KSlmb3IoO2IubGVuZ3RoJTQ7KWIucHVzaChlKTtyZXR1cm4gYi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbihiKXt2YXIgZT1iLmxlbmd0aCxmPXRoaXMuX21hcCxjPWYuY2hhckF0KDY0KTtjJiYoYz1iLmluZGV4T2YoYyksLTEhPWMmJihlPWMpKTtmb3IodmFyIGM9W10sYT0wLGQ9MDtkPFxyXG5lO2QrKylpZihkJTQpe3ZhciBnPWYuaW5kZXhPZihiLmNoYXJBdChkLTEpKTw8MiooZCU0KSxoPWYuaW5kZXhPZihiLmNoYXJBdChkKSk+Pj42LTIqKGQlNCk7Y1thPj4+Ml18PShnfGgpPDwyNC04KihhJTQpO2ErK31yZXR1cm4gai5jcmVhdGUoYyxhKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSkoKTtcclxuXG4vKlxyXG5DcnlwdG9KUyB2My4xLjIgc2hhMjU2LW1pbi5qc1xyXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcclxuKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcclxuKi9cclxuKGZ1bmN0aW9uKGspe2Zvcih2YXIgZz1DcnlwdG9KUyxoPWcubGliLHY9aC5Xb3JkQXJyYXksaj1oLkhhc2hlcixoPWcuYWxnbyxzPVtdLHQ9W10sdT1mdW5jdGlvbihxKXtyZXR1cm4gNDI5NDk2NzI5NioocS0ocXwwKSl8MH0sbD0yLGI9MDs2ND5iOyl7dmFyIGQ7YTp7ZD1sO2Zvcih2YXIgdz1rLnNxcnQoZCkscj0yO3I8PXc7cisrKWlmKCEoZCVyKSl7ZD0hMTticmVhayBhfWQ9ITB9ZCYmKDg+YiYmKHNbYl09dShrLnBvdyhsLDAuNSkpKSx0W2JdPXUoay5wb3cobCwxLzMpKSxiKyspO2wrK312YXIgbj1bXSxoPWguU0hBMjU2PWouZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IHYuaW5pdChzLnNsaWNlKDApKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHEsaCl7Zm9yKHZhciBhPXRoaXMuX2hhc2gud29yZHMsYz1hWzBdLGQ9YVsxXSxiPWFbMl0saz1hWzNdLGY9YVs0XSxnPWFbNV0saj1hWzZdLGw9YVs3XSxlPTA7NjQ+ZTtlKyspe2lmKDE2PmUpbltlXT1cclxucVtoK2VdfDA7ZWxzZXt2YXIgbT1uW2UtMTVdLHA9bltlLTJdO25bZV09KChtPDwyNXxtPj4+NyleKG08PDE0fG0+Pj4xOClebT4+PjMpK25bZS03XSsoKHA8PDE1fHA+Pj4xNyleKHA8PDEzfHA+Pj4xOSlecD4+PjEwKStuW2UtMTZdfW09bCsoKGY8PDI2fGY+Pj42KV4oZjw8MjF8Zj4+PjExKV4oZjw8N3xmPj4+MjUpKSsoZiZnXn5mJmopK3RbZV0rbltlXTtwPSgoYzw8MzB8Yz4+PjIpXihjPDwxOXxjPj4+MTMpXihjPDwxMHxjPj4+MjIpKSsoYyZkXmMmYl5kJmIpO2w9ajtqPWc7Zz1mO2Y9ayttfDA7az1iO2I9ZDtkPWM7Yz1tK3B8MH1hWzBdPWFbMF0rY3wwO2FbMV09YVsxXStkfDA7YVsyXT1hWzJdK2J8MDthWzNdPWFbM10ra3wwO2FbNF09YVs0XStmfDA7YVs1XT1hWzVdK2d8MDthWzZdPWFbNl0ranwwO2FbN109YVs3XStsfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5fZGF0YSxiPWQud29yZHMsYT04KnRoaXMuX25EYXRhQnl0ZXMsYz04KmQuc2lnQnl0ZXM7XHJcbmJbYz4+PjVdfD0xMjg8PDI0LWMlMzI7YlsoYys2ND4+Pjk8PDQpKzE0XT1rLmZsb29yKGEvNDI5NDk2NzI5Nik7YlsoYys2ND4+Pjk8PDQpKzE1XT1hO2Quc2lnQnl0ZXM9NCpiLmxlbmd0aDt0aGlzLl9wcm9jZXNzKCk7cmV0dXJuIHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGI9ai5jbG9uZS5jYWxsKHRoaXMpO2IuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpO3JldHVybiBifX0pO2cuU0hBMjU2PWouX2NyZWF0ZUhlbHBlcihoKTtnLkhtYWNTSEEyNTY9ai5fY3JlYXRlSG1hY0hlbHBlcihoKX0pKE1hdGgpO1xyXG5cbi8qXHJcbkNyeXB0b0pTIHYzLjEuMiBzaGE1MTItbWluLmpzXHJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xyXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxyXG4qL1xyXG4oZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7cmV0dXJuIGQuY3JlYXRlLmFwcGx5KGQsYXJndW1lbnRzKX1mb3IodmFyIG49Q3J5cHRvSlMscj1uLmxpYi5IYXNoZXIsZT1uLng2NCxkPWUuV29yZCxUPWUuV29yZEFycmF5LGU9bi5hbGdvLGVhPVthKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksYSgxODk5NDQ3NDQxLDYwMjg5MTcyNSksYSgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLGEoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxhKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxhKDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksYSgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLGEoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxhKDM2MjQzODEwODAsMjczNDg4MzM5NCksYSgzMTA1OTg0MDEsMTE2NDk5NjU0MiksYSg2MDcyMjUyNzgsMTMyMzYxMDc2NCksYSgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLGEoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxhKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxhKDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxcclxuYSgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLGEoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxhKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxhKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxhKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxhKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxhKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksYSgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLGEoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxhKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksYSgyODIxODM0MzQ5LDc2Njc4NDAxNiksYSgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLGEoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxhKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksYSgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLGEoMTEzOTI2OTkzLDM3NTgzMjYzODMpLGEoMzM4MjQxODk1LDE2ODcxNzkzNiksYSg2NjYzMDcyMDUsMTE4ODE3OTk2NCksYSg3NzM1Mjk5MTIsMTU0NjA0NTczNCksYSgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLGEoMTM5NjE4MjI5MSxcclxuMjY0MzgzMzgyMyksYSgxNjk1MTgzNzAwLDIzNDM1MjczOTApLGEoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSxhKDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksYSgyNDU2OTU2MDM3LDM0NDA3NzYyNyksYSgyNzMwNDg1OTIxLDEyOTA4NjM0NjApLGEoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxhKDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksYSgzMzQ1NzY0NzcxLDEwNjIxNzAwOCksYSgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLGEoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxhKDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCksYSgyNzU0MjMzNDQsODUxMTY5NzIwKSxhKDQzMDIyNzczNCwzMTAwODIzNzUyKSxhKDUwNjk0ODYxNiwxMzYzMjU4MTk1KSxhKDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxhKDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxhKDk1ODEzOTU3MSwzMzE4MzA3NDI3KSxhKDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksYSgxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLGEoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSxcclxuYSgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLGEoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxhKDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksYSgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksYSgyNDI4NDM2NDc0LDU5MzY5ODM0NCksYSgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLGEoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxhKDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksYSgzMzkxNTY5NjE0LDM5MjgzODM5MDApLGEoMzUxNTI2NzI3MSw1NjYyODA3MTEpLGEoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxhKDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksYSgxMTY0MTg0NzQsMTkxNDEzODU1NCksYSgxNzQyOTI0MjEsMjczMTA1NTI3MCksYSgyODkzODAzNTYsMzIwMzk5MzAwNiksYSg0NjAzOTMyNjksMzIwNjIwMzE1KSxhKDY4NTQ3MTczMyw1ODc0OTY4MzYpLGEoODUyMTQyOTcxLDEwODY3OTI4NTEpLGEoMTAxNzAzNjI5OCwzNjU1NDMxMDApLGEoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxhKDEyODgwMzM0NzAsXHJcbjM0MDk4NTUxNTgpLGEoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxhKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxhKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLHY9W10sdz0wOzgwPnc7dysrKXZbd109YSgpO2U9ZS5TSEE1MTI9ci5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgVC5pbml0KFtuZXcgZC5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IGQuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBkLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgZC5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IGQuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBkLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBkLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBkLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbihhLGQpe2Zvcih2YXIgZj10aGlzLl9oYXNoLndvcmRzLFxyXG5GPWZbMF0sZT1mWzFdLG49ZlsyXSxyPWZbM10sRz1mWzRdLEg9Zls1XSxJPWZbNl0sZj1mWzddLHc9Ri5oaWdoLEo9Ri5sb3csWD1lLmhpZ2gsSz1lLmxvdyxZPW4uaGlnaCxMPW4ubG93LFo9ci5oaWdoLE09ci5sb3csJD1HLmhpZ2gsTj1HLmxvdyxhYT1ILmhpZ2gsTz1ILmxvdyxiYT1JLmhpZ2gsUD1JLmxvdyxjYT1mLmhpZ2gsUT1mLmxvdyxrPXcsZz1KLHo9WCx4PUssQT1ZLHk9TCxVPVosQj1NLGw9JCxoPU4sUj1hYSxDPU8sUz1iYSxEPVAsVj1jYSxFPVEsbT0wOzgwPm07bSsrKXt2YXIgcz12W21dO2lmKDE2Pm0pdmFyIGo9cy5oaWdoPWFbZCsyKm1dfDAsYj1zLmxvdz1hW2QrMiptKzFdfDA7ZWxzZXt2YXIgaj12W20tMTVdLGI9ai5oaWdoLHA9ai5sb3csaj0oYj4+PjF8cDw8MzEpXihiPj4+OHxwPDwyNCleYj4+PjcscD0ocD4+PjF8Yjw8MzEpXihwPj4+OHxiPDwyNCleKHA+Pj43fGI8PDI1KSx1PXZbbS0yXSxiPXUuaGlnaCxjPXUubG93LHU9KGI+Pj4xOXxjPDwxMyleKGI8PFxyXG4zfGM+Pj4yOSleYj4+PjYsYz0oYz4+PjE5fGI8PDEzKV4oYzw8M3xiPj4+MjkpXihjPj4+NnxiPDwyNiksYj12W20tN10sVz1iLmhpZ2gsdD12W20tMTZdLHE9dC5oaWdoLHQ9dC5sb3csYj1wK2IubG93LGo9aitXKyhiPj4+MDxwPj4+MD8xOjApLGI9YitjLGo9ait1KyhiPj4+MDxjPj4+MD8xOjApLGI9Yit0LGo9aitxKyhiPj4+MDx0Pj4+MD8xOjApO3MuaGlnaD1qO3MubG93PWJ9dmFyIFc9bCZSXn5sJlMsdD1oJkNefmgmRCxzPWsmel5rJkFeeiZBLFQ9ZyZ4XmcmeV54JnkscD0oaz4+PjI4fGc8PDQpXihrPDwzMHxnPj4+MileKGs8PDI1fGc+Pj43KSx1PShnPj4+Mjh8azw8NCleKGc8PDMwfGs+Pj4yKV4oZzw8MjV8az4+PjcpLGM9ZWFbbV0sZmE9Yy5oaWdoLGRhPWMubG93LGM9RSsoKGg+Pj4xNHxsPDwxOCleKGg+Pj4xOHxsPDwxNCleKGg8PDIzfGw+Pj45KSkscT1WKygobD4+PjE0fGg8PDE4KV4obD4+PjE4fGg8PDE0KV4obDw8MjN8aD4+PjkpKSsoYz4+PjA8RT4+PjA/MTpcclxuMCksYz1jK3QscT1xK1crKGM+Pj4wPHQ+Pj4wPzE6MCksYz1jK2RhLHE9cStmYSsoYz4+PjA8ZGE+Pj4wPzE6MCksYz1jK2IscT1xK2orKGM+Pj4wPGI+Pj4wPzE6MCksYj11K1Qscz1wK3MrKGI+Pj4wPHU+Pj4wPzE6MCksVj1TLEU9RCxTPVIsRD1DLFI9bCxDPWgsaD1CK2N8MCxsPVUrcSsoaD4+PjA8Qj4+PjA/MTowKXwwLFU9QSxCPXksQT16LHk9eCx6PWsseD1nLGc9YytifDAsaz1xK3MrKGc+Pj4wPGM+Pj4wPzE6MCl8MH1KPUYubG93PUorZztGLmhpZ2g9dytrKyhKPj4+MDxnPj4+MD8xOjApO0s9ZS5sb3c9Syt4O2UuaGlnaD1YK3orKEs+Pj4wPHg+Pj4wPzE6MCk7TD1uLmxvdz1MK3k7bi5oaWdoPVkrQSsoTD4+PjA8eT4+PjA/MTowKTtNPXIubG93PU0rQjtyLmhpZ2g9WitVKyhNPj4+MDxCPj4+MD8xOjApO049Ry5sb3c9TitoO0cuaGlnaD0kK2wrKE4+Pj4wPGg+Pj4wPzE6MCk7Tz1ILmxvdz1PK0M7SC5oaWdoPWFhK1IrKE8+Pj4wPEM+Pj4wPzE6MCk7UD1JLmxvdz1QK0Q7XHJcbkkuaGlnaD1iYStTKyhQPj4+MDxEPj4+MD8xOjApO1E9Zi5sb3c9UStFO2YuaGlnaD1jYStWKyhRPj4+MDxFPj4+MD8xOjApfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2RhdGEsZD1hLndvcmRzLGY9OCp0aGlzLl9uRGF0YUJ5dGVzLGU9OCphLnNpZ0J5dGVzO2RbZT4+PjVdfD0xMjg8PDI0LWUlMzI7ZFsoZSsxMjg+Pj4xMDw8NSkrMzBdPU1hdGguZmxvb3IoZi80Mjk0OTY3Mjk2KTtkWyhlKzEyOD4+PjEwPDw1KSszMV09ZjthLnNpZ0J5dGVzPTQqZC5sZW5ndGg7dGhpcy5fcHJvY2VzcygpO3JldHVybiB0aGlzLl9oYXNoLnRvWDMyKCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGE9ci5jbG9uZS5jYWxsKHRoaXMpO2EuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpO3JldHVybiBhfSxibG9ja1NpemU6MzJ9KTtuLlNIQTUxMj1yLl9jcmVhdGVIZWxwZXIoZSk7bi5IbWFjU0hBNTEyPXIuX2NyZWF0ZUhtYWNIZWxwZXIoZSl9KSgpO1xyXG5cbi8qXHJcbkNyeXB0b0pTIHYzLjEuMiBzaGEzODQtbWluLmpzXHJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xyXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxyXG4qL1xyXG4oZnVuY3Rpb24oKXt2YXIgYz1DcnlwdG9KUyxhPWMueDY0LGI9YS5Xb3JkLGU9YS5Xb3JkQXJyYXksYT1jLmFsZ28sZD1hLlNIQTUxMixhPWEuU0hBMzg0PWQuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGUuaW5pdChbbmV3IGIuaW5pdCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpLG5ldyBiLmluaXQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpLG5ldyBiLmluaXQoMjQzODUyOTM3MCw4MTI3MDI5OTkpLG5ldyBiLmluaXQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpLG5ldyBiLmluaXQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KSxuZXcgYi5pbml0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSksbmV3IGIuaW5pdCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpLG5ldyBiLmluaXQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KV0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBhPWQuX2RvRmluYWxpemUuY2FsbCh0aGlzKTthLnNpZ0J5dGVzLT0xNjtyZXR1cm4gYX19KTtjLlNIQTM4ND1cclxuZC5fY3JlYXRlSGVscGVyKGEpO2MuSG1hY1NIQTM4ND1kLl9jcmVhdGVIbWFjSGVscGVyKGEpfSkoKTtcclxuXG4vKiEgKGMpIFRvbSBXdSB8IGh0dHA6Ly93d3ctY3Mtc3R1ZGVudHMuc3RhbmZvcmQuZWR1L350ancvanNibi9cclxuICovXHJcbnZhciBiNjRtYXA9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7dmFyIGI2NHBhZD1cIj1cIjtmdW5jdGlvbiBoZXgyYjY0KGQpe3ZhciBiO3ZhciBlO3ZhciBhPVwiXCI7Zm9yKGI9MDtiKzM8PWQubGVuZ3RoO2IrPTMpe2U9cGFyc2VJbnQoZC5zdWJzdHJpbmcoYixiKzMpLDE2KTthKz1iNjRtYXAuY2hhckF0KGU+PjYpK2I2NG1hcC5jaGFyQXQoZSY2Myl9aWYoYisxPT1kLmxlbmd0aCl7ZT1wYXJzZUludChkLnN1YnN0cmluZyhiLGIrMSksMTYpO2ErPWI2NG1hcC5jaGFyQXQoZTw8Mil9ZWxzZXtpZihiKzI9PWQubGVuZ3RoKXtlPXBhcnNlSW50KGQuc3Vic3RyaW5nKGIsYisyKSwxNik7YSs9YjY0bWFwLmNoYXJBdChlPj4yKStiNjRtYXAuY2hhckF0KChlJjMpPDw0KX19aWYoYjY0cGFkKXt3aGlsZSgoYS5sZW5ndGgmMyk+MCl7YSs9YjY0cGFkfX1yZXR1cm4gYX1mdW5jdGlvbiBiNjR0b2hleChmKXt2YXIgZD1cIlwiO3ZhciBlO3ZhciBiPTA7dmFyIGM7dmFyIGE7Zm9yKGU9MDtlPGYubGVuZ3RoOysrZSl7aWYoZi5jaGFyQXQoZSk9PWI2NHBhZCl7YnJlYWt9YT1iNjRtYXAuaW5kZXhPZihmLmNoYXJBdChlKSk7aWYoYTwwKXtjb250aW51ZX1pZihiPT0wKXtkKz1pbnQyY2hhcihhPj4yKTtjPWEmMztiPTF9ZWxzZXtpZihiPT0xKXtkKz1pbnQyY2hhcigoYzw8Mil8KGE+PjQpKTtjPWEmMTU7Yj0yfWVsc2V7aWYoYj09Mil7ZCs9aW50MmNoYXIoYyk7ZCs9aW50MmNoYXIoYT4+Mik7Yz1hJjM7Yj0zfWVsc2V7ZCs9aW50MmNoYXIoKGM8PDIpfChhPj40KSk7ZCs9aW50MmNoYXIoYSYxNSk7Yj0wfX19fWlmKGI9PTEpe2QrPWludDJjaGFyKGM8PDIpfXJldHVybiBkfWZ1bmN0aW9uIGI2NHRvQkEoZSl7dmFyIGQ9YjY0dG9oZXgoZSk7dmFyIGM7dmFyIGI9bmV3IEFycmF5KCk7Zm9yKGM9MDsyKmM8ZC5sZW5ndGg7KytjKXtiW2NdPXBhcnNlSW50KGQuc3Vic3RyaW5nKDIqYywyKmMrMiksMTYpfXJldHVybiBifTtcbi8qISAoYykgVG9tIFd1IHwgaHR0cDovL3d3dy1jcy1zdHVkZW50cy5zdGFuZm9yZC5lZHUvfnRqdy9qc2JuL1xyXG4gKi9cclxudmFyIGRiaXRzO3ZhciBjYW5hcnk9MjQ0ODM3ODE0MDk0NTkwO3ZhciBqX2xtPSgoY2FuYXJ5JjE2Nzc3MjE1KT09MTU3MTUwNzApO2Z1bmN0aW9uIEJpZ0ludGVnZXIoZSxkLGYpe2lmKGUhPW51bGwpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXt0aGlzLmZyb21OdW1iZXIoZSxkLGYpfWVsc2V7aWYoZD09bnVsbCYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpe3RoaXMuZnJvbVN0cmluZyhlLDI1Nil9ZWxzZXt0aGlzLmZyb21TdHJpbmcoZSxkKX19fX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGYsYSxiLGUsaCxnKXt3aGlsZSgtLWc+PTApe3ZhciBkPWEqdGhpc1tmKytdK2JbZV0raDtoPU1hdGguZmxvb3IoZC82NzEwODg2NCk7YltlKytdPWQmNjcxMDg4NjN9cmV0dXJuIGh9ZnVuY3Rpb24gYW0yKGYscSxyLGUsbyxhKXt2YXIgaz1xJjMyNzY3LHA9cT4+MTU7d2hpbGUoLS1hPj0wKXt2YXIgZD10aGlzW2ZdJjMyNzY3O3ZhciBnPXRoaXNbZisrXT4+MTU7dmFyIGI9cCpkK2cqaztkPWsqZCsoKGImMzI3NjcpPDwxNSkrcltlXSsobyYxMDczNzQxODIzKTtvPShkPj4+MzApKyhiPj4+MTUpK3AqZysobz4+PjMwKTtyW2UrK109ZCYxMDczNzQxODIzfXJldHVybiBvfWZ1bmN0aW9uIGFtMyhmLHEscixlLG8sYSl7dmFyIGs9cSYxNjM4MyxwPXE+PjE0O3doaWxlKC0tYT49MCl7dmFyIGQ9dGhpc1tmXSYxNjM4Mzt2YXIgZz10aGlzW2YrK10+PjE0O3ZhciBiPXAqZCtnKms7ZD1rKmQrKChiJjE2MzgzKTw8MTQpK3JbZV0rbztvPShkPj4yOCkrKGI+PjE0KStwKmc7cltlKytdPWQmMjY4NDM1NDU1fXJldHVybiBvfWlmKGpfbG0mJihuYXZpZ2F0b3IuYXBwTmFtZT09XCJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXJcIikpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMjtkYml0cz0zMH1lbHNle2lmKGpfbG0mJihuYXZpZ2F0b3IuYXBwTmFtZSE9XCJOZXRzY2FwZVwiKSl7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0xO2RiaXRzPTI2fWVsc2V7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0zO2RiaXRzPTI4fX1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oKDE8PGRiaXRzKS0xKTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5EVj0oMTw8ZGJpdHMpO3ZhciBCSV9GUD01MjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5GVj1NYXRoLnBvdygyLEJJX0ZQKTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5GMT1CSV9GUC1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5GMj0yKmRiaXRzLUJJX0ZQO3ZhciBCSV9STT1cIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO3ZhciBCSV9SQz1uZXcgQXJyYXkoKTt2YXIgcnIsdnY7cnI9XCIwXCIuY2hhckNvZGVBdCgwKTtmb3IodnY9MDt2djw9OTsrK3Z2KXtCSV9SQ1tycisrXT12dn1ycj1cImFcIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0xMDt2djwzNjsrK3Z2KXtCSV9SQ1tycisrXT12dn1ycj1cIkFcIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0xMDt2djwzNjsrK3Z2KXtCSV9SQ1tycisrXT12dn1mdW5jdGlvbiBpbnQyY2hhcihhKXtyZXR1cm4gQklfUk0uY2hhckF0KGEpfWZ1bmN0aW9uIGludEF0KGIsYSl7dmFyIGQ9QklfUkNbYi5jaGFyQ29kZUF0KGEpXTtyZXR1cm4oZD09bnVsbCk/LTE6ZH1mdW5jdGlvbiBibnBDb3B5VG8oYil7Zm9yKHZhciBhPXRoaXMudC0xO2E+PTA7LS1hKXtiW2FdPXRoaXNbYV19Yi50PXRoaXMudDtiLnM9dGhpcy5zfWZ1bmN0aW9uIGJucEZyb21JbnQoYSl7dGhpcy50PTE7dGhpcy5zPShhPDApPy0xOjA7aWYoYT4wKXt0aGlzWzBdPWF9ZWxzZXtpZihhPC0xKXt0aGlzWzBdPWErdGhpcy5EVn1lbHNle3RoaXMudD0wfX19ZnVuY3Rpb24gbmJ2KGEpe3ZhciBiPW5iaSgpO2IuZnJvbUludChhKTtyZXR1cm4gYn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKGgsYyl7dmFyIGU7aWYoYz09MTYpe2U9NH1lbHNle2lmKGM9PTgpe2U9M31lbHNle2lmKGM9PTI1Nil7ZT04fWVsc2V7aWYoYz09Mil7ZT0xfWVsc2V7aWYoYz09MzIpe2U9NX1lbHNle2lmKGM9PTQpe2U9Mn1lbHNle3RoaXMuZnJvbVJhZGl4KGgsYyk7cmV0dXJufX19fX19dGhpcy50PTA7dGhpcy5zPTA7dmFyIGc9aC5sZW5ndGgsZD1mYWxzZSxmPTA7d2hpbGUoLS1nPj0wKXt2YXIgYT0oZT09OCk/aFtnXSYyNTU6aW50QXQoaCxnKTtpZihhPDApe2lmKGguY2hhckF0KGcpPT1cIi1cIil7ZD10cnVlfWNvbnRpbnVlfWQ9ZmFsc2U7aWYoZj09MCl7dGhpc1t0aGlzLnQrK109YX1lbHNle2lmKGYrZT50aGlzLkRCKXt0aGlzW3RoaXMudC0xXXw9KGEmKCgxPDwodGhpcy5EQi1mKSktMSkpPDxmO3RoaXNbdGhpcy50KytdPShhPj4odGhpcy5EQi1mKSl9ZWxzZXt0aGlzW3RoaXMudC0xXXw9YTw8Zn19Zis9ZTtpZihmPj10aGlzLkRCKXtmLT10aGlzLkRCfX1pZihlPT04JiYoaFswXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoZj4wKXt0aGlzW3RoaXMudC0xXXw9KCgxPDwodGhpcy5EQi1mKSktMSk8PGZ9fXRoaXMuY2xhbXAoKTtpZihkKXtCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX19ZnVuY3Rpb24gYm5wQ2xhbXAoKXt2YXIgYT10aGlzLnMmdGhpcy5ETTt3aGlsZSh0aGlzLnQ+MCYmdGhpc1t0aGlzLnQtMV09PWEpey0tdGhpcy50fX1mdW5jdGlvbiBiblRvU3RyaW5nKGMpe2lmKHRoaXMuczwwKXtyZXR1cm5cIi1cIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGMpfXZhciBlO2lmKGM9PTE2KXtlPTR9ZWxzZXtpZihjPT04KXtlPTN9ZWxzZXtpZihjPT0yKXtlPTF9ZWxzZXtpZihjPT0zMil7ZT01fWVsc2V7aWYoYz09NCl7ZT0yfWVsc2V7cmV0dXJuIHRoaXMudG9SYWRpeChjKX19fX19dmFyIGc9KDE8PGUpLTEsbCxhPWZhbHNlLGg9XCJcIixmPXRoaXMudDt2YXIgaj10aGlzLkRCLShmKnRoaXMuREIpJWU7aWYoZi0tPjApe2lmKGo8dGhpcy5EQiYmKGw9dGhpc1tmXT4+aik+MCl7YT10cnVlO2g9aW50MmNoYXIobCl9d2hpbGUoZj49MCl7aWYoajxlKXtsPSh0aGlzW2ZdJigoMTw8aiktMSkpPDwoZS1qKTtsfD10aGlzWy0tZl0+PihqKz10aGlzLkRCLWUpfWVsc2V7bD0odGhpc1tmXT4+KGotPWUpKSZnO2lmKGo8PTApe2orPXRoaXMuREI7LS1mfX1pZihsPjApe2E9dHJ1ZX1pZihhKXtoKz1pbnQyY2hhcihsKX19fXJldHVybiBhP2g6XCIwXCJ9ZnVuY3Rpb24gYm5OZWdhdGUoKXt2YXIgYT1uYmkoKTtCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyxhKTtyZXR1cm4gYX1mdW5jdGlvbiBibkFicygpe3JldHVybih0aGlzLnM8MCk/dGhpcy5uZWdhdGUoKTp0aGlzfWZ1bmN0aW9uIGJuQ29tcGFyZVRvKGIpe3ZhciBkPXRoaXMucy1iLnM7aWYoZCE9MCl7cmV0dXJuIGR9dmFyIGM9dGhpcy50O2Q9Yy1iLnQ7aWYoZCE9MCl7cmV0dXJuKHRoaXMuczwwKT8tZDpkfXdoaWxlKC0tYz49MCl7aWYoKGQ9dGhpc1tjXS1iW2NdKSE9MCl7cmV0dXJuIGR9fXJldHVybiAwfWZ1bmN0aW9uIG5iaXRzKGEpe3ZhciBjPTEsYjtpZigoYj1hPj4+MTYpIT0wKXthPWI7Yys9MTZ9aWYoKGI9YT4+OCkhPTApe2E9YjtjKz04fWlmKChiPWE+PjQpIT0wKXthPWI7Yys9NH1pZigoYj1hPj4yKSE9MCl7YT1iO2MrPTJ9aWYoKGI9YT4+MSkhPTApe2E9YjtjKz0xfXJldHVybiBjfWZ1bmN0aW9uIGJuQml0TGVuZ3RoKCl7aWYodGhpcy50PD0wKXtyZXR1cm4gMH1yZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXih0aGlzLnMmdGhpcy5ETSkpfWZ1bmN0aW9uIGJucERMU2hpZnRUbyhjLGIpe3ZhciBhO2ZvcihhPXRoaXMudC0xO2E+PTA7LS1hKXtiW2ErY109dGhpc1thXX1mb3IoYT1jLTE7YT49MDstLWEpe2JbYV09MH1iLnQ9dGhpcy50K2M7Yi5zPXRoaXMuc31mdW5jdGlvbiBibnBEUlNoaWZ0VG8oYyxiKXtmb3IodmFyIGE9YzthPHRoaXMudDsrK2Epe2JbYS1jXT10aGlzW2FdfWIudD1NYXRoLm1heCh0aGlzLnQtYywwKTtiLnM9dGhpcy5zfWZ1bmN0aW9uIGJucExTaGlmdFRvKGosZSl7dmFyIGI9aiV0aGlzLkRCO3ZhciBhPXRoaXMuREItYjt2YXIgZz0oMTw8YSktMTt2YXIgZj1NYXRoLmZsb29yKGovdGhpcy5EQiksaD0odGhpcy5zPDxiKSZ0aGlzLkRNLGQ7Zm9yKGQ9dGhpcy50LTE7ZD49MDstLWQpe2VbZCtmKzFdPSh0aGlzW2RdPj5hKXxoO2g9KHRoaXNbZF0mZyk8PGJ9Zm9yKGQ9Zi0xO2Q+PTA7LS1kKXtlW2RdPTB9ZVtmXT1oO2UudD10aGlzLnQrZisxO2Uucz10aGlzLnM7ZS5jbGFtcCgpfWZ1bmN0aW9uIGJucFJTaGlmdFRvKGcsZCl7ZC5zPXRoaXMuczt2YXIgZT1NYXRoLmZsb29yKGcvdGhpcy5EQik7aWYoZT49dGhpcy50KXtkLnQ9MDtyZXR1cm59dmFyIGI9ZyV0aGlzLkRCO3ZhciBhPXRoaXMuREItYjt2YXIgZj0oMTw8YiktMTtkWzBdPXRoaXNbZV0+PmI7Zm9yKHZhciBjPWUrMTtjPHRoaXMudDsrK2Mpe2RbYy1lLTFdfD0odGhpc1tjXSZmKTw8YTtkW2MtZV09dGhpc1tjXT4+Yn1pZihiPjApe2RbdGhpcy50LWUtMV18PSh0aGlzLnMmZik8PGF9ZC50PXRoaXMudC1lO2QuY2xhbXAoKX1mdW5jdGlvbiBibnBTdWJUbyhkLGYpe3ZhciBlPTAsZz0wLGI9TWF0aC5taW4oZC50LHRoaXMudCk7d2hpbGUoZTxiKXtnKz10aGlzW2VdLWRbZV07ZltlKytdPWcmdGhpcy5ETTtnPj49dGhpcy5EQn1pZihkLnQ8dGhpcy50KXtnLT1kLnM7d2hpbGUoZTx0aGlzLnQpe2crPXRoaXNbZV07ZltlKytdPWcmdGhpcy5ETTtnPj49dGhpcy5EQn1nKz10aGlzLnN9ZWxzZXtnKz10aGlzLnM7d2hpbGUoZTxkLnQpe2ctPWRbZV07ZltlKytdPWcmdGhpcy5ETTtnPj49dGhpcy5EQn1nLT1kLnN9Zi5zPShnPDApPy0xOjA7aWYoZzwtMSl7ZltlKytdPXRoaXMuRFYrZ31lbHNle2lmKGc+MCl7ZltlKytdPWd9fWYudD1lO2YuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGMsZSl7dmFyIGI9dGhpcy5hYnMoKSxmPWMuYWJzKCk7dmFyIGQ9Yi50O2UudD1kK2YudDt3aGlsZSgtLWQ+PTApe2VbZF09MH1mb3IoZD0wO2Q8Zi50OysrZCl7ZVtkK2IudF09Yi5hbSgwLGZbZF0sZSxkLDAsYi50KX1lLnM9MDtlLmNsYW1wKCk7aWYodGhpcy5zIT1jLnMpe0JpZ0ludGVnZXIuWkVSTy5zdWJUbyhlLGUpfX1mdW5jdGlvbiBibnBTcXVhcmVUbyhkKXt2YXIgYT10aGlzLmFicygpO3ZhciBiPWQudD0yKmEudDt3aGlsZSgtLWI+PTApe2RbYl09MH1mb3IoYj0wO2I8YS50LTE7KytiKXt2YXIgZT1hLmFtKGIsYVtiXSxkLDIqYiwwLDEpO2lmKChkW2IrYS50XSs9YS5hbShiKzEsMiphW2JdLGQsMipiKzEsZSxhLnQtYi0xKSk+PWEuRFYpe2RbYithLnRdLT1hLkRWO2RbYithLnQrMV09MX19aWYoZC50PjApe2RbZC50LTFdKz1hLmFtKGIsYVtiXSxkLDIqYiwwLDEpfWQucz0wO2QuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhuLGgsZyl7dmFyIHc9bi5hYnMoKTtpZih3LnQ8PTApe3JldHVybn12YXIgaz10aGlzLmFicygpO2lmKGsudDx3LnQpe2lmKGghPW51bGwpe2guZnJvbUludCgwKX1pZihnIT1udWxsKXt0aGlzLmNvcHlUbyhnKX1yZXR1cm59aWYoZz09bnVsbCl7Zz1uYmkoKX12YXIgZD1uYmkoKSxhPXRoaXMucyxsPW4uczt2YXIgdj10aGlzLkRCLW5iaXRzKHdbdy50LTFdKTtpZih2PjApe3cubFNoaWZ0VG8odixkKTtrLmxTaGlmdFRvKHYsZyl9ZWxzZXt3LmNvcHlUbyhkKTtrLmNvcHlUbyhnKX12YXIgcD1kLnQ7dmFyIGI9ZFtwLTFdO2lmKGI9PTApe3JldHVybn12YXIgbz1iKigxPDx0aGlzLkYxKSsoKHA+MSk/ZFtwLTJdPj50aGlzLkYyOjApO3ZhciBBPXRoaXMuRlYvbyx6PSgxPDx0aGlzLkYxKS9vLHg9MTw8dGhpcy5GMjt2YXIgdT1nLnQscz11LXAsZj0oaD09bnVsbCk/bmJpKCk6aDtkLmRsU2hpZnRUbyhzLGYpO2lmKGcuY29tcGFyZVRvKGYpPj0wKXtnW2cudCsrXT0xO2cuc3ViVG8oZixnKX1CaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8ocCxmKTtmLnN1YlRvKGQsZCk7d2hpbGUoZC50PHApe2RbZC50KytdPTB9d2hpbGUoLS1zPj0wKXt2YXIgYz0oZ1stLXVdPT1iKT90aGlzLkRNOk1hdGguZmxvb3IoZ1t1XSpBKyhnW3UtMV0reCkqeik7aWYoKGdbdV0rPWQuYW0oMCxjLGcscywwLHApKTxjKXtkLmRsU2hpZnRUbyhzLGYpO2cuc3ViVG8oZixnKTt3aGlsZShnW3VdPC0tYyl7Zy5zdWJUbyhmLGcpfX19aWYoaCE9bnVsbCl7Zy5kclNoaWZ0VG8ocCxoKTtpZihhIT1sKXtCaWdJbnRlZ2VyLlpFUk8uc3ViVG8oaCxoKX19Zy50PXA7Zy5jbGFtcCgpO2lmKHY+MCl7Zy5yU2hpZnRUbyh2LGcpfWlmKGE8MCl7QmlnSW50ZWdlci5aRVJPLnN1YlRvKGcsZyl9fWZ1bmN0aW9uIGJuTW9kKGIpe3ZhciBjPW5iaSgpO3RoaXMuYWJzKCkuZGl2UmVtVG8oYixudWxsLGMpO2lmKHRoaXMuczwwJiZjLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPjApe2Iuc3ViVG8oYyxjKX1yZXR1cm4gY31mdW5jdGlvbiBDbGFzc2ljKGEpe3RoaXMubT1hfWZ1bmN0aW9uIGNDb252ZXJ0KGEpe2lmKGEuczwwfHxhLmNvbXBhcmVUbyh0aGlzLm0pPj0wKXtyZXR1cm4gYS5tb2QodGhpcy5tKX1lbHNle3JldHVybiBhfX1mdW5jdGlvbiBjUmV2ZXJ0KGEpe3JldHVybiBhfWZ1bmN0aW9uIGNSZWR1Y2UoYSl7YS5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxhKX1mdW5jdGlvbiBjTXVsVG8oYSxjLGIpe2EubXVsdGlwbHlUbyhjLGIpO3RoaXMucmVkdWNlKGIpfWZ1bmN0aW9uIGNTcXJUbyhhLGIpe2Euc3F1YXJlVG8oYik7dGhpcy5yZWR1Y2UoYil9Q2xhc3NpYy5wcm90b3R5cGUuY29udmVydD1jQ29udmVydDtDbGFzc2ljLnByb3RvdHlwZS5yZXZlcnQ9Y1JldmVydDtDbGFzc2ljLnByb3RvdHlwZS5yZWR1Y2U9Y1JlZHVjZTtDbGFzc2ljLnByb3RvdHlwZS5tdWxUbz1jTXVsVG87Q2xhc3NpYy5wcm90b3R5cGUuc3FyVG89Y1NxclRvO2Z1bmN0aW9uIGJucEludkRpZ2l0KCl7aWYodGhpcy50PDEpe3JldHVybiAwfXZhciBhPXRoaXNbMF07aWYoKGEmMSk9PTApe3JldHVybiAwfXZhciBiPWEmMztiPShiKigyLShhJjE1KSpiKSkmMTU7Yj0oYiooMi0oYSYyNTUpKmIpKSYyNTU7Yj0oYiooMi0oKChhJjY1NTM1KSpiKSY2NTUzNSkpKSY2NTUzNTtiPShiKigyLWEqYiV0aGlzLkRWKSkldGhpcy5EVjtyZXR1cm4oYj4wKT90aGlzLkRWLWI6LWJ9ZnVuY3Rpb24gTW9udGdvbWVyeShhKXt0aGlzLm09YTt0aGlzLm1wPWEuaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PChhLkRCLTE1KSktMTt0aGlzLm10Mj0yKmEudH1mdW5jdGlvbiBtb250Q29udmVydChhKXt2YXIgYj1uYmkoKTthLmFicygpLmRsU2hpZnRUbyh0aGlzLm0udCxiKTtiLmRpdlJlbVRvKHRoaXMubSxudWxsLGIpO2lmKGEuczwwJiZiLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPjApe3RoaXMubS5zdWJUbyhiLGIpfXJldHVybiBifWZ1bmN0aW9uIG1vbnRSZXZlcnQoYSl7dmFyIGI9bmJpKCk7YS5jb3B5VG8oYik7dGhpcy5yZWR1Y2UoYik7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9udFJlZHVjZShhKXt3aGlsZShhLnQ8PXRoaXMubXQyKXthW2EudCsrXT0wfWZvcih2YXIgYz0wO2M8dGhpcy5tLnQ7KytjKXt2YXIgYj1hW2NdJjMyNzY3O3ZhciBkPShiKnRoaXMubXBsKygoKGIqdGhpcy5tcGgrKGFbY10+PjE1KSp0aGlzLm1wbCkmdGhpcy51bSk8PDE1KSkmYS5ETTtiPWMrdGhpcy5tLnQ7YVtiXSs9dGhpcy5tLmFtKDAsZCxhLGMsMCx0aGlzLm0udCk7d2hpbGUoYVtiXT49YS5EVil7YVtiXS09YS5EVjthWysrYl0rK319YS5jbGFtcCgpO2EuZHJTaGlmdFRvKHRoaXMubS50LGEpO2lmKGEuY29tcGFyZVRvKHRoaXMubSk+PTApe2Euc3ViVG8odGhpcy5tLGEpfX1mdW5jdGlvbiBtb250U3FyVG8oYSxiKXthLnNxdWFyZVRvKGIpO3RoaXMucmVkdWNlKGIpfWZ1bmN0aW9uIG1vbnRNdWxUbyhhLGMsYil7YS5tdWx0aXBseVRvKGMsYik7dGhpcy5yZWR1Y2UoYil9TW9udGdvbWVyeS5wcm90b3R5cGUuY29udmVydD1tb250Q29udmVydDtNb250Z29tZXJ5LnByb3RvdHlwZS5yZXZlcnQ9bW9udFJldmVydDtNb250Z29tZXJ5LnByb3RvdHlwZS5yZWR1Y2U9bW9udFJlZHVjZTtNb250Z29tZXJ5LnByb3RvdHlwZS5tdWxUbz1tb250TXVsVG87TW9udGdvbWVyeS5wcm90b3R5cGUuc3FyVG89bW9udFNxclRvO2Z1bmN0aW9uIGJucElzRXZlbigpe3JldHVybigodGhpcy50PjApPyh0aGlzWzBdJjEpOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGgsail7aWYoaD40Mjk0OTY3Mjk1fHxoPDEpe3JldHVybiBCaWdJbnRlZ2VyLk9ORX12YXIgZj1uYmkoKSxhPW5iaSgpLGQ9ai5jb252ZXJ0KHRoaXMpLGM9bmJpdHMoaCktMTtkLmNvcHlUbyhmKTt3aGlsZSgtLWM+PTApe2ouc3FyVG8oZixhKTtpZigoaCYoMTw8YykpPjApe2oubXVsVG8oYSxkLGYpfWVsc2V7dmFyIGI9ZjtmPWE7YT1ifX1yZXR1cm4gai5yZXZlcnQoZil9ZnVuY3Rpb24gYm5Nb2RQb3dJbnQoYixhKXt2YXIgYztpZihiPDI1Nnx8YS5pc0V2ZW4oKSl7Yz1uZXcgQ2xhc3NpYyhhKX1lbHNle2M9bmV3IE1vbnRnb21lcnkoYSl9cmV0dXJuIHRoaXMuZXhwKGIsYyl9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7XG4vKiEgKGMpIFRvbSBXdSB8IGh0dHA6Ly93d3ctY3Mtc3R1ZGVudHMuc3RhbmZvcmQuZWR1L350ancvanNibi9cclxuICovXHJcbmZ1bmN0aW9uIGJuQ2xvbmUoKXt2YXIgYT1uYmkoKTt0aGlzLmNvcHlUbyhhKTtyZXR1cm4gYX1mdW5jdGlvbiBibkludFZhbHVlKCl7aWYodGhpcy5zPDApe2lmKHRoaXMudD09MSl7cmV0dXJuIHRoaXNbMF0tdGhpcy5EVn1lbHNle2lmKHRoaXMudD09MCl7cmV0dXJuIC0xfX19ZWxzZXtpZih0aGlzLnQ9PTEpe3JldHVybiB0aGlzWzBdfWVsc2V7aWYodGhpcy50PT0wKXtyZXR1cm4gMH19fXJldHVybigodGhpc1sxXSYoKDE8PCgzMi10aGlzLkRCKSktMSkpPDx0aGlzLkRCKXx0aGlzWzBdfWZ1bmN0aW9uIGJuQnl0ZVZhbHVlKCl7cmV0dXJuKHRoaXMudD09MCk/dGhpcy5zOih0aGlzWzBdPDwyNCk+PjI0fWZ1bmN0aW9uIGJuU2hvcnRWYWx1ZSgpe3JldHVybih0aGlzLnQ9PTApP3RoaXMuczoodGhpc1swXTw8MTYpPj4xNn1mdW5jdGlvbiBibnBDaHVua1NpemUoYSl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5MTjIqdGhpcy5EQi9NYXRoLmxvZyhhKSl9ZnVuY3Rpb24gYm5TaWdOdW0oKXtpZih0aGlzLnM8MCl7cmV0dXJuIC0xfWVsc2V7aWYodGhpcy50PD0wfHwodGhpcy50PT0xJiZ0aGlzWzBdPD0wKSl7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gMX19fWZ1bmN0aW9uIGJucFRvUmFkaXgoYyl7aWYoYz09bnVsbCl7Yz0xMH1pZih0aGlzLnNpZ251bSgpPT0wfHxjPDJ8fGM+MzYpe3JldHVyblwiMFwifXZhciBmPXRoaXMuY2h1bmtTaXplKGMpO3ZhciBlPU1hdGgucG93KGMsZik7dmFyIGk9bmJ2KGUpLGo9bmJpKCksaD1uYmkoKSxnPVwiXCI7dGhpcy5kaXZSZW1UbyhpLGosaCk7d2hpbGUoai5zaWdudW0oKT4wKXtnPShlK2guaW50VmFsdWUoKSkudG9TdHJpbmcoYykuc3Vic3RyKDEpK2c7ai5kaXZSZW1UbyhpLGosaCl9cmV0dXJuIGguaW50VmFsdWUoKS50b1N0cmluZyhjKStnfWZ1bmN0aW9uIGJucEZyb21SYWRpeChtLGgpe3RoaXMuZnJvbUludCgwKTtpZihoPT1udWxsKXtoPTEwfXZhciBmPXRoaXMuY2h1bmtTaXplKGgpO3ZhciBnPU1hdGgucG93KGgsZiksZT1mYWxzZSxhPTAsbD0wO2Zvcih2YXIgYz0wO2M8bS5sZW5ndGg7KytjKXt2YXIgaz1pbnRBdChtLGMpO2lmKGs8MCl7aWYobS5jaGFyQXQoYyk9PVwiLVwiJiZ0aGlzLnNpZ251bSgpPT0wKXtlPXRydWV9Y29udGludWV9bD1oKmwraztpZigrK2E+PWYpe3RoaXMuZE11bHRpcGx5KGcpO3RoaXMuZEFkZE9mZnNldChsLDApO2E9MDtsPTB9fWlmKGE+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coaCxhKSk7dGhpcy5kQWRkT2Zmc2V0KGwsMCl9aWYoZSl7QmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIGJucEZyb21OdW1iZXIoZixlLGgpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXtpZihmPDIpe3RoaXMuZnJvbUludCgxKX1lbHNle3RoaXMuZnJvbU51bWJlcihmLGgpO2lmKCF0aGlzLnRlc3RCaXQoZi0xKSl7dGhpcy5iaXR3aXNlVG8oQmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGYtMSksb3Bfb3IsdGhpcyl9aWYodGhpcy5pc0V2ZW4oKSl7dGhpcy5kQWRkT2Zmc2V0KDEsMCl9d2hpbGUoIXRoaXMuaXNQcm9iYWJsZVByaW1lKGUpKXt0aGlzLmRBZGRPZmZzZXQoMiwwKTtpZih0aGlzLmJpdExlbmd0aCgpPmYpe3RoaXMuc3ViVG8oQmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGYtMSksdGhpcyl9fX19ZWxzZXt2YXIgZD1uZXcgQXJyYXkoKSxnPWYmNztkLmxlbmd0aD0oZj4+MykrMTtlLm5leHRCeXRlcyhkKTtpZihnPjApe2RbMF0mPSgoMTw8ZyktMSl9ZWxzZXtkWzBdPTB9dGhpcy5mcm9tU3RyaW5nKGQsMjU2KX19ZnVuY3Rpb24gYm5Ub0J5dGVBcnJheSgpe3ZhciBiPXRoaXMudCxjPW5ldyBBcnJheSgpO2NbMF09dGhpcy5zO3ZhciBlPXRoaXMuREItKGIqdGhpcy5EQiklOCxmLGE9MDtpZihiLS0+MCl7aWYoZTx0aGlzLkRCJiYoZj10aGlzW2JdPj5lKSE9KHRoaXMucyZ0aGlzLkRNKT4+ZSl7Y1thKytdPWZ8KHRoaXMuczw8KHRoaXMuREItZSkpfXdoaWxlKGI+PTApe2lmKGU8OCl7Zj0odGhpc1tiXSYoKDE8PGUpLTEpKTw8KDgtZSk7Znw9dGhpc1stLWJdPj4oZSs9dGhpcy5EQi04KX1lbHNle2Y9KHRoaXNbYl0+PihlLT04KSkmMjU1O2lmKGU8PTApe2UrPXRoaXMuREI7LS1ifX1pZigoZiYxMjgpIT0wKXtmfD0tMjU2fWlmKGE9PTAmJih0aGlzLnMmMTI4KSE9KGYmMTI4KSl7KythfWlmKGE+MHx8ZiE9dGhpcy5zKXtjW2ErK109Zn19fXJldHVybiBjfWZ1bmN0aW9uIGJuRXF1YWxzKGIpe3JldHVybih0aGlzLmNvbXBhcmVUbyhiKT09MCl9ZnVuY3Rpb24gYm5NaW4oYil7cmV0dXJuKHRoaXMuY29tcGFyZVRvKGIpPDApP3RoaXM6Yn1mdW5jdGlvbiBibk1heChiKXtyZXR1cm4odGhpcy5jb21wYXJlVG8oYik+MCk/dGhpczpifWZ1bmN0aW9uIGJucEJpdHdpc2VUbyhjLGgsZSl7dmFyIGQsZyxiPU1hdGgubWluKGMudCx0aGlzLnQpO2ZvcihkPTA7ZDxiOysrZCl7ZVtkXT1oKHRoaXNbZF0sY1tkXSl9aWYoYy50PHRoaXMudCl7Zz1jLnMmdGhpcy5ETTtmb3IoZD1iO2Q8dGhpcy50OysrZCl7ZVtkXT1oKHRoaXNbZF0sZyl9ZS50PXRoaXMudH1lbHNle2c9dGhpcy5zJnRoaXMuRE07Zm9yKGQ9YjtkPGMudDsrK2Qpe2VbZF09aChnLGNbZF0pfWUudD1jLnR9ZS5zPWgodGhpcy5zLGMucyk7ZS5jbGFtcCgpfWZ1bmN0aW9uIG9wX2FuZChhLGIpe3JldHVybiBhJmJ9ZnVuY3Rpb24gYm5BbmQoYil7dmFyIGM9bmJpKCk7dGhpcy5iaXR3aXNlVG8oYixvcF9hbmQsYyk7cmV0dXJuIGN9ZnVuY3Rpb24gb3Bfb3IoYSxiKXtyZXR1cm4gYXxifWZ1bmN0aW9uIGJuT3IoYil7dmFyIGM9bmJpKCk7dGhpcy5iaXR3aXNlVG8oYixvcF9vcixjKTtyZXR1cm4gY31mdW5jdGlvbiBvcF94b3IoYSxiKXtyZXR1cm4gYV5ifWZ1bmN0aW9uIGJuWG9yKGIpe3ZhciBjPW5iaSgpO3RoaXMuYml0d2lzZVRvKGIsb3BfeG9yLGMpO3JldHVybiBjfWZ1bmN0aW9uIG9wX2FuZG5vdChhLGIpe3JldHVybiBhJn5ifWZ1bmN0aW9uIGJuQW5kTm90KGIpe3ZhciBjPW5iaSgpO3RoaXMuYml0d2lzZVRvKGIsb3BfYW5kbm90LGMpO3JldHVybiBjfWZ1bmN0aW9uIGJuTm90KCl7dmFyIGI9bmJpKCk7Zm9yKHZhciBhPTA7YTx0aGlzLnQ7KythKXtiW2FdPXRoaXMuRE0mfnRoaXNbYV19Yi50PXRoaXMudDtiLnM9fnRoaXMucztyZXR1cm4gYn1mdW5jdGlvbiBiblNoaWZ0TGVmdChiKXt2YXIgYT1uYmkoKTtpZihiPDApe3RoaXMuclNoaWZ0VG8oLWIsYSl9ZWxzZXt0aGlzLmxTaGlmdFRvKGIsYSl9cmV0dXJuIGF9ZnVuY3Rpb24gYm5TaGlmdFJpZ2h0KGIpe3ZhciBhPW5iaSgpO2lmKGI8MCl7dGhpcy5sU2hpZnRUbygtYixhKX1lbHNle3RoaXMuclNoaWZ0VG8oYixhKX1yZXR1cm4gYX1mdW5jdGlvbiBsYml0KGEpe2lmKGE9PTApe3JldHVybiAtMX12YXIgYj0wO2lmKChhJjY1NTM1KT09MCl7YT4+PTE2O2IrPTE2fWlmKChhJjI1NSk9PTApe2E+Pj04O2IrPTh9aWYoKGEmMTUpPT0wKXthPj49NDtiKz00fWlmKChhJjMpPT0wKXthPj49MjtiKz0yfWlmKChhJjEpPT0wKXsrK2J9cmV0dXJuIGJ9ZnVuY3Rpb24gYm5HZXRMb3dlc3RTZXRCaXQoKXtmb3IodmFyIGE9MDthPHRoaXMudDsrK2Epe2lmKHRoaXNbYV0hPTApe3JldHVybiBhKnRoaXMuREIrbGJpdCh0aGlzW2FdKX19aWYodGhpcy5zPDApe3JldHVybiB0aGlzLnQqdGhpcy5EQn1yZXR1cm4gLTF9ZnVuY3Rpb24gY2JpdChhKXt2YXIgYj0wO3doaWxlKGEhPTApe2EmPWEtMTsrK2J9cmV0dXJuIGJ9ZnVuY3Rpb24gYm5CaXRDb3VudCgpe3ZhciBjPTAsYT10aGlzLnMmdGhpcy5ETTtmb3IodmFyIGI9MDtiPHRoaXMudDsrK2Ipe2MrPWNiaXQodGhpc1tiXV5hKX1yZXR1cm4gY31mdW5jdGlvbiBiblRlc3RCaXQoYil7dmFyIGE9TWF0aC5mbG9vcihiL3RoaXMuREIpO2lmKGE+PXRoaXMudCl7cmV0dXJuKHRoaXMucyE9MCl9cmV0dXJuKCh0aGlzW2FdJigxPDwoYiV0aGlzLkRCKSkpIT0wKX1mdW5jdGlvbiBibnBDaGFuZ2VCaXQoYyxiKXt2YXIgYT1CaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQoYyk7dGhpcy5iaXR3aXNlVG8oYSxiLGEpO3JldHVybiBhfWZ1bmN0aW9uIGJuU2V0Qml0KGEpe3JldHVybiB0aGlzLmNoYW5nZUJpdChhLG9wX29yKX1mdW5jdGlvbiBibkNsZWFyQml0KGEpe3JldHVybiB0aGlzLmNoYW5nZUJpdChhLG9wX2FuZG5vdCl9ZnVuY3Rpb24gYm5GbGlwQml0KGEpe3JldHVybiB0aGlzLmNoYW5nZUJpdChhLG9wX3hvcil9ZnVuY3Rpb24gYm5wQWRkVG8oZCxmKXt2YXIgZT0wLGc9MCxiPU1hdGgubWluKGQudCx0aGlzLnQpO3doaWxlKGU8Yil7Zys9dGhpc1tlXStkW2VdO2ZbZSsrXT1nJnRoaXMuRE07Zz4+PXRoaXMuREJ9aWYoZC50PHRoaXMudCl7Zys9ZC5zO3doaWxlKGU8dGhpcy50KXtnKz10aGlzW2VdO2ZbZSsrXT1nJnRoaXMuRE07Zz4+PXRoaXMuREJ9Zys9dGhpcy5zfWVsc2V7Zys9dGhpcy5zO3doaWxlKGU8ZC50KXtnKz1kW2VdO2ZbZSsrXT1nJnRoaXMuRE07Zz4+PXRoaXMuREJ9Zys9ZC5zfWYucz0oZzwwKT8tMTowO2lmKGc+MCl7ZltlKytdPWd9ZWxzZXtpZihnPC0xKXtmW2UrK109dGhpcy5EVitnfX1mLnQ9ZTtmLmNsYW1wKCl9ZnVuY3Rpb24gYm5BZGQoYil7dmFyIGM9bmJpKCk7dGhpcy5hZGRUbyhiLGMpO3JldHVybiBjfWZ1bmN0aW9uIGJuU3VidHJhY3QoYil7dmFyIGM9bmJpKCk7dGhpcy5zdWJUbyhiLGMpO3JldHVybiBjfWZ1bmN0aW9uIGJuTXVsdGlwbHkoYil7dmFyIGM9bmJpKCk7dGhpcy5tdWx0aXBseVRvKGIsYyk7cmV0dXJuIGN9ZnVuY3Rpb24gYm5TcXVhcmUoKXt2YXIgYT1uYmkoKTt0aGlzLnNxdWFyZVRvKGEpO3JldHVybiBhfWZ1bmN0aW9uIGJuRGl2aWRlKGIpe3ZhciBjPW5iaSgpO3RoaXMuZGl2UmVtVG8oYixjLG51bGwpO3JldHVybiBjfWZ1bmN0aW9uIGJuUmVtYWluZGVyKGIpe3ZhciBjPW5iaSgpO3RoaXMuZGl2UmVtVG8oYixudWxsLGMpO3JldHVybiBjfWZ1bmN0aW9uIGJuRGl2aWRlQW5kUmVtYWluZGVyKGIpe3ZhciBkPW5iaSgpLGM9bmJpKCk7dGhpcy5kaXZSZW1UbyhiLGQsYyk7cmV0dXJuIG5ldyBBcnJheShkLGMpfWZ1bmN0aW9uIGJucERNdWx0aXBseShhKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLGEtMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KGIsYSl7aWYoYj09MCl7cmV0dXJufXdoaWxlKHRoaXMudDw9YSl7dGhpc1t0aGlzLnQrK109MH10aGlzW2FdKz1iO3doaWxlKHRoaXNbYV0+PXRoaXMuRFYpe3RoaXNbYV0tPXRoaXMuRFY7aWYoKythPj10aGlzLnQpe3RoaXNbdGhpcy50KytdPTB9Kyt0aGlzW2FdfX1mdW5jdGlvbiBOdWxsRXhwKCl7fWZ1bmN0aW9uIG5Ob3AoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gbk11bFRvKGEsYyxiKXthLm11bHRpcGx5VG8oYyxiKX1mdW5jdGlvbiBuU3FyVG8oYSxiKXthLnNxdWFyZVRvKGIpfU51bGxFeHAucHJvdG90eXBlLmNvbnZlcnQ9bk5vcDtOdWxsRXhwLnByb3RvdHlwZS5yZXZlcnQ9bk5vcDtOdWxsRXhwLnByb3RvdHlwZS5tdWxUbz1uTXVsVG87TnVsbEV4cC5wcm90b3R5cGUuc3FyVG89blNxclRvO2Z1bmN0aW9uIGJuUG93KGEpe3JldHVybiB0aGlzLmV4cChhLG5ldyBOdWxsRXhwKCkpfWZ1bmN0aW9uIGJucE11bHRpcGx5TG93ZXJUbyhiLGYsZSl7dmFyIGQ9TWF0aC5taW4odGhpcy50K2IudCxmKTtlLnM9MDtlLnQ9ZDt3aGlsZShkPjApe2VbLS1kXT0wfXZhciBjO2ZvcihjPWUudC10aGlzLnQ7ZDxjOysrZCl7ZVtkK3RoaXMudF09dGhpcy5hbSgwLGJbZF0sZSxkLDAsdGhpcy50KX1mb3IoYz1NYXRoLm1pbihiLnQsZik7ZDxjOysrZCl7dGhpcy5hbSgwLGJbZF0sZSxkLDAsZi1kKX1lLmNsYW1wKCl9ZnVuY3Rpb24gYm5wTXVsdGlwbHlVcHBlclRvKGIsZSxkKXstLWU7dmFyIGM9ZC50PXRoaXMudCtiLnQtZTtkLnM9MDt3aGlsZSgtLWM+PTApe2RbY109MH1mb3IoYz1NYXRoLm1heChlLXRoaXMudCwwKTtjPGIudDsrK2Mpe2RbdGhpcy50K2MtZV09dGhpcy5hbShlLWMsYltjXSxkLDAsMCx0aGlzLnQrYy1lKX1kLmNsYW1wKCk7ZC5kclNoaWZ0VG8oMSxkKX1mdW5jdGlvbiBCYXJyZXR0KGEpe3RoaXMucjI9bmJpKCk7dGhpcy5xMz1uYmkoKTtCaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8oMiphLnQsdGhpcy5yMik7dGhpcy5tdT10aGlzLnIyLmRpdmlkZShhKTt0aGlzLm09YX1mdW5jdGlvbiBiYXJyZXR0Q29udmVydChhKXtpZihhLnM8MHx8YS50PjIqdGhpcy5tLnQpe3JldHVybiBhLm1vZCh0aGlzLm0pfWVsc2V7aWYoYS5jb21wYXJlVG8odGhpcy5tKTwwKXtyZXR1cm4gYX1lbHNle3ZhciBiPW5iaSgpO2EuY29weVRvKGIpO3RoaXMucmVkdWNlKGIpO3JldHVybiBifX19ZnVuY3Rpb24gYmFycmV0dFJldmVydChhKXtyZXR1cm4gYX1mdW5jdGlvbiBiYXJyZXR0UmVkdWNlKGEpe2EuZHJTaGlmdFRvKHRoaXMubS50LTEsdGhpcy5yMik7aWYoYS50PnRoaXMubS50KzEpe2EudD10aGlzLm0udCsxO2EuY2xhbXAoKX10aGlzLm11Lm11bHRpcGx5VXBwZXJUbyh0aGlzLnIyLHRoaXMubS50KzEsdGhpcy5xMyk7dGhpcy5tLm11bHRpcGx5TG93ZXJUbyh0aGlzLnEzLHRoaXMubS50KzEsdGhpcy5yMik7d2hpbGUoYS5jb21wYXJlVG8odGhpcy5yMik8MCl7YS5kQWRkT2Zmc2V0KDEsdGhpcy5tLnQrMSl9YS5zdWJUbyh0aGlzLnIyLGEpO3doaWxlKGEuY29tcGFyZVRvKHRoaXMubSk+PTApe2Euc3ViVG8odGhpcy5tLGEpfX1mdW5jdGlvbiBiYXJyZXR0U3FyVG8oYSxiKXthLnNxdWFyZVRvKGIpO3RoaXMucmVkdWNlKGIpfWZ1bmN0aW9uIGJhcnJldHRNdWxUbyhhLGMsYil7YS5tdWx0aXBseVRvKGMsYik7dGhpcy5yZWR1Y2UoYil9QmFycmV0dC5wcm90b3R5cGUuY29udmVydD1iYXJyZXR0Q29udmVydDtCYXJyZXR0LnByb3RvdHlwZS5yZXZlcnQ9YmFycmV0dFJldmVydDtCYXJyZXR0LnByb3RvdHlwZS5yZWR1Y2U9YmFycmV0dFJlZHVjZTtCYXJyZXR0LnByb3RvdHlwZS5tdWxUbz1iYXJyZXR0TXVsVG87QmFycmV0dC5wcm90b3R5cGUuc3FyVG89YmFycmV0dFNxclRvO2Z1bmN0aW9uIGJuTW9kUG93KHEsZil7dmFyIG89cS5iaXRMZW5ndGgoKSxoLGI9bmJ2KDEpLHY7aWYobzw9MCl7cmV0dXJuIGJ9ZWxzZXtpZihvPDE4KXtoPTF9ZWxzZXtpZihvPDQ4KXtoPTN9ZWxzZXtpZihvPDE0NCl7aD00fWVsc2V7aWYobzw3Njgpe2g9NX1lbHNle2g9Nn19fX19aWYobzw4KXt2PW5ldyBDbGFzc2ljKGYpfWVsc2V7aWYoZi5pc0V2ZW4oKSl7dj1uZXcgQmFycmV0dChmKX1lbHNle3Y9bmV3IE1vbnRnb21lcnkoZil9fXZhciBwPW5ldyBBcnJheSgpLGQ9MyxzPWgtMSxhPSgxPDxoKS0xO3BbMV09di5jb252ZXJ0KHRoaXMpO2lmKGg+MSl7dmFyIEE9bmJpKCk7di5zcXJUbyhwWzFdLEEpO3doaWxlKGQ8PWEpe3BbZF09bmJpKCk7di5tdWxUbyhBLHBbZC0yXSxwW2RdKTtkKz0yfX12YXIgbD1xLnQtMSx4LHU9dHJ1ZSxjPW5iaSgpLHk7bz1uYml0cyhxW2xdKS0xO3doaWxlKGw+PTApe2lmKG8+PXMpe3g9KHFbbF0+PihvLXMpKSZhfWVsc2V7eD0ocVtsXSYoKDE8PChvKzEpKS0xKSk8PChzLW8pO2lmKGw+MCl7eHw9cVtsLTFdPj4odGhpcy5EQitvLXMpfX1kPWg7d2hpbGUoKHgmMSk9PTApe3g+Pj0xOy0tZH1pZigoby09ZCk8MCl7bys9dGhpcy5EQjstLWx9aWYodSl7cFt4XS5jb3B5VG8oYik7dT1mYWxzZX1lbHNle3doaWxlKGQ+MSl7di5zcXJUbyhiLGMpO3Yuc3FyVG8oYyxiKTtkLT0yfWlmKGQ+MCl7di5zcXJUbyhiLGMpfWVsc2V7eT1iO2I9YztjPXl9di5tdWxUbyhjLHBbeF0sYil9d2hpbGUobD49MCYmKHFbbF0mKDE8PG8pKT09MCl7di5zcXJUbyhiLGMpO3k9YjtiPWM7Yz15O2lmKC0tbzwwKXtvPXRoaXMuREItMTstLWx9fX1yZXR1cm4gdi5yZXZlcnQoYil9ZnVuY3Rpb24gYm5HQ0QoYyl7dmFyIGI9KHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRoaXMuY2xvbmUoKTt2YXIgaD0oYy5zPDApP2MubmVnYXRlKCk6Yy5jbG9uZSgpO2lmKGIuY29tcGFyZVRvKGgpPDApe3ZhciBlPWI7Yj1oO2g9ZX12YXIgZD1iLmdldExvd2VzdFNldEJpdCgpLGY9aC5nZXRMb3dlc3RTZXRCaXQoKTtpZihmPDApe3JldHVybiBifWlmKGQ8Zil7Zj1kfWlmKGY+MCl7Yi5yU2hpZnRUbyhmLGIpO2guclNoaWZ0VG8oZixoKX13aGlsZShiLnNpZ251bSgpPjApe2lmKChkPWIuZ2V0TG93ZXN0U2V0Qml0KCkpPjApe2IuclNoaWZ0VG8oZCxiKX1pZigoZD1oLmdldExvd2VzdFNldEJpdCgpKT4wKXtoLnJTaGlmdFRvKGQsaCl9aWYoYi5jb21wYXJlVG8oaCk+PTApe2Iuc3ViVG8oaCxiKTtiLnJTaGlmdFRvKDEsYil9ZWxzZXtoLnN1YlRvKGIsaCk7aC5yU2hpZnRUbygxLGgpfX1pZihmPjApe2gubFNoaWZ0VG8oZixoKX1yZXR1cm4gaH1mdW5jdGlvbiBibnBNb2RJbnQoZSl7aWYoZTw9MCl7cmV0dXJuIDB9dmFyIGM9dGhpcy5EViVlLGI9KHRoaXMuczwwKT9lLTE6MDtpZih0aGlzLnQ+MCl7aWYoYz09MCl7Yj10aGlzWzBdJWV9ZWxzZXtmb3IodmFyIGE9dGhpcy50LTE7YT49MDstLWEpe2I9KGMqYit0aGlzW2FdKSVlfX19cmV0dXJuIGJ9ZnVuY3Rpb24gYm5Nb2RJbnZlcnNlKGYpe3ZhciBqPWYuaXNFdmVuKCk7aWYoKHRoaXMuaXNFdmVuKCkmJmopfHxmLnNpZ251bSgpPT0wKXtyZXR1cm4gQmlnSW50ZWdlci5aRVJPfXZhciBpPWYuY2xvbmUoKSxoPXRoaXMuY2xvbmUoKTt2YXIgZz1uYnYoMSksZT1uYnYoMCksbD1uYnYoMCksaz1uYnYoMSk7d2hpbGUoaS5zaWdudW0oKSE9MCl7d2hpbGUoaS5pc0V2ZW4oKSl7aS5yU2hpZnRUbygxLGkpO2lmKGope2lmKCFnLmlzRXZlbigpfHwhZS5pc0V2ZW4oKSl7Zy5hZGRUbyh0aGlzLGcpO2Uuc3ViVG8oZixlKX1nLnJTaGlmdFRvKDEsZyl9ZWxzZXtpZighZS5pc0V2ZW4oKSl7ZS5zdWJUbyhmLGUpfX1lLnJTaGlmdFRvKDEsZSl9d2hpbGUoaC5pc0V2ZW4oKSl7aC5yU2hpZnRUbygxLGgpO2lmKGope2lmKCFsLmlzRXZlbigpfHwhay5pc0V2ZW4oKSl7bC5hZGRUbyh0aGlzLGwpO2suc3ViVG8oZixrKX1sLnJTaGlmdFRvKDEsbCl9ZWxzZXtpZighay5pc0V2ZW4oKSl7ay5zdWJUbyhmLGspfX1rLnJTaGlmdFRvKDEsayl9aWYoaS5jb21wYXJlVG8oaCk+PTApe2kuc3ViVG8oaCxpKTtpZihqKXtnLnN1YlRvKGwsZyl9ZS5zdWJUbyhrLGUpfWVsc2V7aC5zdWJUbyhpLGgpO2lmKGope2wuc3ViVG8oZyxsKX1rLnN1YlRvKGUsayl9fWlmKGguY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSE9MCl7cmV0dXJuIEJpZ0ludGVnZXIuWkVST31pZihrLmNvbXBhcmVUbyhmKT49MCl7cmV0dXJuIGsuc3VidHJhY3QoZil9aWYoay5zaWdudW0oKTwwKXtrLmFkZFRvKGYsayl9ZWxzZXtyZXR1cm4ga31pZihrLnNpZ251bSgpPDApe3JldHVybiBrLmFkZChmKX1lbHNle3JldHVybiBrfX12YXIgbG93cHJpbWVzPVsyLDMsNSw3LDExLDEzLDE3LDE5LDIzLDI5LDMxLDM3LDQxLDQzLDQ3LDUzLDU5LDYxLDY3LDcxLDczLDc5LDgzLDg5LDk3LDEwMSwxMDMsMTA3LDEwOSwxMTMsMTI3LDEzMSwxMzcsMTM5LDE0OSwxNTEsMTU3LDE2MywxNjcsMTczLDE3OSwxODEsMTkxLDE5MywxOTcsMTk5LDIxMSwyMjMsMjI3LDIyOSwyMzMsMjM5LDI0MSwyNTEsMjU3LDI2MywyNjksMjcxLDI3NywyODEsMjgzLDI5MywzMDcsMzExLDMxMywzMTcsMzMxLDMzNywzNDcsMzQ5LDM1MywzNTksMzY3LDM3MywzNzksMzgzLDM4OSwzOTcsNDAxLDQwOSw0MTksNDIxLDQzMSw0MzMsNDM5LDQ0Myw0NDksNDU3LDQ2MSw0NjMsNDY3LDQ3OSw0ODcsNDkxLDQ5OSw1MDMsNTA5LDUyMSw1MjMsNTQxLDU0Nyw1NTcsNTYzLDU2OSw1NzEsNTc3LDU4Nyw1OTMsNTk5LDYwMSw2MDcsNjEzLDYxNyw2MTksNjMxLDY0MSw2NDMsNjQ3LDY1Myw2NTksNjYxLDY3Myw2NzcsNjgzLDY5MSw3MDEsNzA5LDcxOSw3MjcsNzMzLDczOSw3NDMsNzUxLDc1Nyw3NjEsNzY5LDc3Myw3ODcsNzk3LDgwOSw4MTEsODIxLDgyMyw4MjcsODI5LDgzOSw4NTMsODU3LDg1OSw4NjMsODc3LDg4MSw4ODMsODg3LDkwNyw5MTEsOTE5LDkyOSw5MzcsOTQxLDk0Nyw5NTMsOTY3LDk3MSw5NzcsOTgzLDk5MSw5OTddO3ZhciBscGxpbT0oMTw8MjYpL2xvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdO2Z1bmN0aW9uIGJuSXNQcm9iYWJsZVByaW1lKGUpe3ZhciBkLGI9dGhpcy5hYnMoKTtpZihiLnQ9PTEmJmJbMF08PWxvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdKXtmb3IoZD0wO2Q8bG93cHJpbWVzLmxlbmd0aDsrK2Qpe2lmKGJbMF09PWxvd3ByaW1lc1tkXSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1pZihiLmlzRXZlbigpKXtyZXR1cm4gZmFsc2V9ZD0xO3doaWxlKGQ8bG93cHJpbWVzLmxlbmd0aCl7dmFyIGE9bG93cHJpbWVzW2RdLGM9ZCsxO3doaWxlKGM8bG93cHJpbWVzLmxlbmd0aCYmYTxscGxpbSl7YSo9bG93cHJpbWVzW2MrK119YT1iLm1vZEludChhKTt3aGlsZShkPGMpe2lmKGElbG93cHJpbWVzW2QrK109PTApe3JldHVybiBmYWxzZX19fXJldHVybiBiLm1pbGxlclJhYmluKGUpfWZ1bmN0aW9uIGJucE1pbGxlclJhYmluKGYpe3ZhciBnPXRoaXMuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpO3ZhciBjPWcuZ2V0TG93ZXN0U2V0Qml0KCk7aWYoYzw9MCl7cmV0dXJuIGZhbHNlfXZhciBoPWcuc2hpZnRSaWdodChjKTtmPShmKzEpPj4xO2lmKGY+bG93cHJpbWVzLmxlbmd0aCl7Zj1sb3dwcmltZXMubGVuZ3RofXZhciBiPW5iaSgpO2Zvcih2YXIgZT0wO2U8ZjsrK2Upe2IuZnJvbUludChsb3dwcmltZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxvd3ByaW1lcy5sZW5ndGgpXSk7dmFyIGw9Yi5tb2RQb3coaCx0aGlzKTtpZihsLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkhPTAmJmwuY29tcGFyZVRvKGcpIT0wKXt2YXIgZD0xO3doaWxlKGQrKzxjJiZsLmNvbXBhcmVUbyhnKSE9MCl7bD1sLm1vZFBvd0ludCgyLHRoaXMpO2lmKGwuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKT09MCl7cmV0dXJuIGZhbHNlfX1pZihsLmNvbXBhcmVUbyhnKSE9MCl7cmV0dXJuIGZhbHNlfX19cmV0dXJuIHRydWV9QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1JhZGl4PWJucFRvUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVJhZGl4PWJucEZyb21SYWRpeDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tTnVtYmVyPWJucEZyb21OdW1iZXI7QmlnSW50ZWdlci5wcm90b3R5cGUuYml0d2lzZVRvPWJucEJpdHdpc2VUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jaGFuZ2VCaXQ9Ym5wQ2hhbmdlQml0O0JpZ0ludGVnZXIucHJvdG90eXBlLmFkZFRvPWJucEFkZFRvO0JpZ0ludGVnZXIucHJvdG90eXBlLmRNdWx0aXBseT1ibnBETXVsdGlwbHk7QmlnSW50ZWdlci5wcm90b3R5cGUuZEFkZE9mZnNldD1ibnBEQWRkT2Zmc2V0O0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5TG93ZXJUbz1ibnBNdWx0aXBseUxvd2VyVG87QmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHlVcHBlclRvPWJucE11bHRpcGx5VXBwZXJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnQ9Ym5wTW9kSW50O0JpZ0ludGVnZXIucHJvdG90eXBlLm1pbGxlclJhYmluPWJucE1pbGxlclJhYmluO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsb25lPWJuQ2xvbmU7QmlnSW50ZWdlci5wcm90b3R5cGUuaW50VmFsdWU9Ym5JbnRWYWx1ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5ieXRlVmFsdWU9Ym5CeXRlVmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuc2hvcnRWYWx1ZT1iblNob3J0VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuc2lnbnVtPWJuU2lnTnVtO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvQnl0ZUFycmF5PWJuVG9CeXRlQXJyYXk7QmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzPWJuRXF1YWxzO0JpZ0ludGVnZXIucHJvdG90eXBlLm1pbj1ibk1pbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tYXg9Ym5NYXg7QmlnSW50ZWdlci5wcm90b3R5cGUuYW5kPWJuQW5kO0JpZ0ludGVnZXIucHJvdG90eXBlLm9yPWJuT3I7QmlnSW50ZWdlci5wcm90b3R5cGUueG9yPWJuWG9yO0JpZ0ludGVnZXIucHJvdG90eXBlLmFuZE5vdD1ibkFuZE5vdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3Q9Ym5Ob3Q7QmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0PWJuU2hpZnRMZWZ0O0JpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ9Ym5TaGlmdFJpZ2h0O0JpZ0ludGVnZXIucHJvdG90eXBlLmdldExvd2VzdFNldEJpdD1ibkdldExvd2VzdFNldEJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRDb3VudD1ibkJpdENvdW50O0JpZ0ludGVnZXIucHJvdG90eXBlLnRlc3RCaXQ9Ym5UZXN0Qml0O0JpZ0ludGVnZXIucHJvdG90eXBlLnNldEJpdD1iblNldEJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbGVhckJpdD1ibkNsZWFyQml0O0JpZ0ludGVnZXIucHJvdG90eXBlLmZsaXBCaXQ9Ym5GbGlwQml0O0JpZ0ludGVnZXIucHJvdG90eXBlLmFkZD1ibkFkZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdD1iblN1YnRyYWN0O0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5PWJuTXVsdGlwbHk7QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlPWJuRGl2aWRlO0JpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlcj1iblJlbWFpbmRlcjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGVBbmRSZW1haW5kZXI9Ym5EaXZpZGVBbmRSZW1haW5kZXI7QmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93PWJuTW9kUG93O0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludmVyc2U9Ym5Nb2RJbnZlcnNlO0JpZ0ludGVnZXIucHJvdG90eXBlLnBvdz1iblBvdztCaWdJbnRlZ2VyLnByb3RvdHlwZS5nY2Q9Ym5HQ0Q7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lPWJuSXNQcm9iYWJsZVByaW1lO0JpZ0ludGVnZXIucHJvdG90eXBlLnNxdWFyZT1iblNxdWFyZTtcbi8qISAoYykgVG9tIFd1IHwgaHR0cDovL3d3dy1jcy1zdHVkZW50cy5zdGFuZm9yZC5lZHUvfnRqdy9qc2JuL1xyXG4gKi9cclxuZnVuY3Rpb24gQXJjZm91cigpe3RoaXMuaT0wO3RoaXMuaj0wO3RoaXMuUz1uZXcgQXJyYXkoKX1mdW5jdGlvbiBBUkM0aW5pdChkKXt2YXIgYyxhLGI7Zm9yKGM9MDtjPDI1NjsrK2Mpe3RoaXMuU1tjXT1jfWE9MDtmb3IoYz0wO2M8MjU2OysrYyl7YT0oYSt0aGlzLlNbY10rZFtjJWQubGVuZ3RoXSkmMjU1O2I9dGhpcy5TW2NdO3RoaXMuU1tjXT10aGlzLlNbYV07dGhpcy5TW2FdPWJ9dGhpcy5pPTA7dGhpcy5qPTB9ZnVuY3Rpb24gQVJDNG5leHQoKXt2YXIgYTt0aGlzLmk9KHRoaXMuaSsxKSYyNTU7dGhpcy5qPSh0aGlzLmordGhpcy5TW3RoaXMuaV0pJjI1NTthPXRoaXMuU1t0aGlzLmldO3RoaXMuU1t0aGlzLmldPXRoaXMuU1t0aGlzLmpdO3RoaXMuU1t0aGlzLmpdPWE7cmV0dXJuIHRoaXMuU1soYSt0aGlzLlNbdGhpcy5pXSkmMjU1XX1BcmNmb3VyLnByb3RvdHlwZS5pbml0PUFSQzRpbml0O0FyY2ZvdXIucHJvdG90eXBlLm5leHQ9QVJDNG5leHQ7ZnVuY3Rpb24gcHJuZ19uZXdzdGF0ZSgpe3JldHVybiBuZXcgQXJjZm91cigpfXZhciBybmdfcHNpemU9MjU2O1xuLyohIChjKSBUb20gV3UgfCBodHRwOi8vd3d3LWNzLXN0dWRlbnRzLnN0YW5mb3JkLmVkdS9+dGp3L2pzYm4vXHJcbiAqL1xyXG52YXIgcm5nX3N0YXRlO3ZhciBybmdfcG9vbDt2YXIgcm5nX3BwdHI7ZnVuY3Rpb24gcm5nX3NlZWRfaW50KGEpe3JuZ19wb29sW3JuZ19wcHRyKytdXj1hJjI1NTtybmdfcG9vbFtybmdfcHB0cisrXV49KGE+PjgpJjI1NTtybmdfcG9vbFtybmdfcHB0cisrXV49KGE+PjE2KSYyNTU7cm5nX3Bvb2xbcm5nX3BwdHIrK11ePShhPj4yNCkmMjU1O2lmKHJuZ19wcHRyPj1ybmdfcHNpemUpe3JuZ19wcHRyLT1ybmdfcHNpemV9fWZ1bmN0aW9uIHJuZ19zZWVkX3RpbWUoKXtybmdfc2VlZF9pbnQobmV3IERhdGUoKS5nZXRUaW1lKCkpfWlmKHJuZ19wb29sPT1udWxsKXtybmdfcG9vbD1uZXcgQXJyYXkoKTtybmdfcHB0cj0wO3ZhciB0O2lmKHdpbmRvdyE9PXVuZGVmaW5lZCYmKHdpbmRvdy5jcnlwdG8hPT11bmRlZmluZWR8fHdpbmRvdy5tc0NyeXB0byE9PXVuZGVmaW5lZCkpe3ZhciBjcnlwdG89d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO2lmKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpe3ZhciB1YT1uZXcgVWludDhBcnJheSgzMik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyh1YSk7Zm9yKHQ9MDt0PDMyOysrdCl7cm5nX3Bvb2xbcm5nX3BwdHIrK109dWFbdF19fWVsc2V7aWYobmF2aWdhdG9yLmFwcE5hbWU9PVwiTmV0c2NhcGVcIiYmbmF2aWdhdG9yLmFwcFZlcnNpb248XCI1XCIpe3ZhciB6PXdpbmRvdy5jcnlwdG8ucmFuZG9tKDMyKTtmb3IodD0wO3Q8ei5sZW5ndGg7Kyt0KXtybmdfcG9vbFtybmdfcHB0cisrXT16LmNoYXJDb2RlQXQodCkmMjU1fX19fXdoaWxlKHJuZ19wcHRyPHJuZ19wc2l6ZSl7dD1NYXRoLmZsb29yKDY1NTM2Kk1hdGgucmFuZG9tKCkpO3JuZ19wb29sW3JuZ19wcHRyKytdPXQ+Pj44O3JuZ19wb29sW3JuZ19wcHRyKytdPXQmMjU1fXJuZ19wcHRyPTA7cm5nX3NlZWRfdGltZSgpfWZ1bmN0aW9uIHJuZ19nZXRfYnl0ZSgpe2lmKHJuZ19zdGF0ZT09bnVsbCl7cm5nX3NlZWRfdGltZSgpO3JuZ19zdGF0ZT1wcm5nX25ld3N0YXRlKCk7cm5nX3N0YXRlLmluaXQocm5nX3Bvb2wpO2ZvcihybmdfcHB0cj0wO3JuZ19wcHRyPHJuZ19wb29sLmxlbmd0aDsrK3JuZ19wcHRyKXtybmdfcG9vbFtybmdfcHB0cl09MH1ybmdfcHB0cj0wfXJldHVybiBybmdfc3RhdGUubmV4dCgpfWZ1bmN0aW9uIHJuZ19nZXRfYnl0ZXMoYil7dmFyIGE7Zm9yKGE9MDthPGIubGVuZ3RoOysrYSl7YlthXT1ybmdfZ2V0X2J5dGUoKX19ZnVuY3Rpb24gU2VjdXJlUmFuZG9tKCl7fVNlY3VyZVJhbmRvbS5wcm90b3R5cGUubmV4dEJ5dGVzPXJuZ19nZXRfYnl0ZXM7XG4vKiEgKGMpIFRvbSBXdSB8IGh0dHA6Ly93d3ctY3Mtc3R1ZGVudHMuc3RhbmZvcmQuZWR1L350ancvanNibi9cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlQmlnSW50KGIsYSl7cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGIsYSl9ZnVuY3Rpb24gbGluZWJyayhjLGQpe3ZhciBhPVwiXCI7dmFyIGI9MDt3aGlsZShiK2Q8Yy5sZW5ndGgpe2ErPWMuc3Vic3RyaW5nKGIsYitkKStcIlxcblwiO2IrPWR9cmV0dXJuIGErYy5zdWJzdHJpbmcoYixjLmxlbmd0aCl9ZnVuY3Rpb24gYnl0ZTJIZXgoYSl7aWYoYTwxNil7cmV0dXJuXCIwXCIrYS50b1N0cmluZygxNil9ZWxzZXtyZXR1cm4gYS50b1N0cmluZygxNil9fWZ1bmN0aW9uIHBrY3MxcGFkMihlLGgpe2lmKGg8ZS5sZW5ndGgrMTEpe3Rocm93XCJNZXNzYWdlIHRvbyBsb25nIGZvciBSU0FcIjtyZXR1cm4gbnVsbH12YXIgZz1uZXcgQXJyYXkoKTt2YXIgZD1lLmxlbmd0aC0xO3doaWxlKGQ+PTAmJmg+MCl7dmFyIGY9ZS5jaGFyQ29kZUF0KGQtLSk7aWYoZjwxMjgpe2dbLS1oXT1mfWVsc2V7aWYoKGY+MTI3KSYmKGY8MjA0OCkpe2dbLS1oXT0oZiY2Myl8MTI4O2dbLS1oXT0oZj4+Nil8MTkyfWVsc2V7Z1stLWhdPShmJjYzKXwxMjg7Z1stLWhdPSgoZj4+NikmNjMpfDEyODtnWy0taF09KGY+PjEyKXwyMjR9fX1nWy0taF09MDt2YXIgYj1uZXcgU2VjdXJlUmFuZG9tKCk7dmFyIGE9bmV3IEFycmF5KCk7d2hpbGUoaD4yKXthWzBdPTA7d2hpbGUoYVswXT09MCl7Yi5uZXh0Qnl0ZXMoYSl9Z1stLWhdPWFbMF19Z1stLWhdPTI7Z1stLWhdPTA7cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGcpfWZ1bmN0aW9uIG9hZXBfbWdmMV9hcnIoYyxhLGUpe3ZhciBiPVwiXCIsZD0wO3doaWxlKGIubGVuZ3RoPGEpe2IrPWUoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsYy5jb25jYXQoWyhkJjQyNzgxOTAwODApPj4yNCwoZCYxNjcxMTY4MCk+PjE2LChkJjY1MjgwKT4+OCxkJjI1NV0pKSk7ZCs9MX1yZXR1cm4gYn1mdW5jdGlvbiBvYWVwX3BhZChxLGEsZixsKXt2YXIgYz1LSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0O3ZhciBvPUtKVVIuY3J5cHRvLlV0aWw7dmFyIGI9bnVsbDtpZighZil7Zj1cInNoYTFcIn1pZih0eXBlb2YgZj09PVwic3RyaW5nXCIpe2I9Yy5nZXRDYW5vbmljYWxBbGdOYW1lKGYpO2w9Yy5nZXRIYXNoTGVuZ3RoKGIpO2Y9ZnVuY3Rpb24oaSl7cmV0dXJuIGhleHRvcnN0cihvLmhhc2hIZXgocnN0cnRvaGV4KGkpLGIpKX19aWYocS5sZW5ndGgrMipsKzI+YSl7dGhyb3dcIk1lc3NhZ2UgdG9vIGxvbmcgZm9yIFJTQVwifXZhciBrPVwiXCIsZTtmb3IoZT0wO2U8YS1xLmxlbmd0aC0yKmwtMjtlKz0xKXtrKz1cIlxceDAwXCJ9dmFyIGg9ZihcIlwiKStrK1wiXFx4MDFcIitxO3ZhciBnPW5ldyBBcnJheShsKTtuZXcgU2VjdXJlUmFuZG9tKCkubmV4dEJ5dGVzKGcpO3ZhciBqPW9hZXBfbWdmMV9hcnIoZyxoLmxlbmd0aCxmKTt2YXIgcD1bXTtmb3IoZT0wO2U8aC5sZW5ndGg7ZSs9MSl7cFtlXT1oLmNoYXJDb2RlQXQoZSleai5jaGFyQ29kZUF0KGUpfXZhciBtPW9hZXBfbWdmMV9hcnIocCxnLmxlbmd0aCxmKTt2YXIgZD1bMF07Zm9yKGU9MDtlPGcubGVuZ3RoO2UrPTEpe2RbZSsxXT1nW2VdXm0uY2hhckNvZGVBdChlKX1yZXR1cm4gbmV3IEJpZ0ludGVnZXIoZC5jb25jYXQocCkpfWZ1bmN0aW9uIFJTQUtleSgpe3RoaXMubj1udWxsO3RoaXMuZT0wO3RoaXMuZD1udWxsO3RoaXMucD1udWxsO3RoaXMucT1udWxsO3RoaXMuZG1wMT1udWxsO3RoaXMuZG1xMT1udWxsO3RoaXMuY29lZmY9bnVsbH1mdW5jdGlvbiBSU0FTZXRQdWJsaWMoYixhKXt0aGlzLmlzUHVibGljPXRydWU7dGhpcy5pc1ByaXZhdGU9ZmFsc2U7aWYodHlwZW9mIGIhPT1cInN0cmluZ1wiKXt0aGlzLm49Yjt0aGlzLmU9YX1lbHNle2lmKGIhPW51bGwmJmEhPW51bGwmJmIubGVuZ3RoPjAmJmEubGVuZ3RoPjApe3RoaXMubj1wYXJzZUJpZ0ludChiLDE2KTt0aGlzLmU9cGFyc2VJbnQoYSwxNil9ZWxzZXt0aHJvd1wiSW52YWxpZCBSU0EgcHVibGljIGtleVwifX19ZnVuY3Rpb24gUlNBRG9QdWJsaWMoYSl7cmV0dXJuIGEubW9kUG93SW50KHRoaXMuZSx0aGlzLm4pfWZ1bmN0aW9uIFJTQUVuY3J5cHQoZCl7dmFyIGE9cGtjczFwYWQyKGQsKHRoaXMubi5iaXRMZW5ndGgoKSs3KT4+Myk7aWYoYT09bnVsbCl7cmV0dXJuIG51bGx9dmFyIGU9dGhpcy5kb1B1YmxpYyhhKTtpZihlPT1udWxsKXtyZXR1cm4gbnVsbH12YXIgYj1lLnRvU3RyaW5nKDE2KTtpZigoYi5sZW5ndGgmMSk9PTApe3JldHVybiBifWVsc2V7cmV0dXJuXCIwXCIrYn19ZnVuY3Rpb24gUlNBRW5jcnlwdE9BRVAoZixlLGIpe3ZhciBhPW9hZXBfcGFkKGYsKHRoaXMubi5iaXRMZW5ndGgoKSs3KT4+MyxlLGIpO2lmKGE9PW51bGwpe3JldHVybiBudWxsfXZhciBnPXRoaXMuZG9QdWJsaWMoYSk7aWYoZz09bnVsbCl7cmV0dXJuIG51bGx9dmFyIGQ9Zy50b1N0cmluZygxNik7aWYoKGQubGVuZ3RoJjEpPT0wKXtyZXR1cm4gZH1lbHNle3JldHVyblwiMFwiK2R9fVJTQUtleS5wcm90b3R5cGUuZG9QdWJsaWM9UlNBRG9QdWJsaWM7UlNBS2V5LnByb3RvdHlwZS5zZXRQdWJsaWM9UlNBU2V0UHVibGljO1JTQUtleS5wcm90b3R5cGUuZW5jcnlwdD1SU0FFbmNyeXB0O1JTQUtleS5wcm90b3R5cGUuZW5jcnlwdE9BRVA9UlNBRW5jcnlwdE9BRVA7UlNBS2V5LnByb3RvdHlwZS50eXBlPVwiUlNBXCI7XG4vKiEgKGMpIFRvbSBXdSB8IGh0dHA6Ly93d3ctY3Mtc3R1ZGVudHMuc3RhbmZvcmQuZWR1L350ancvanNibi9cclxuICovXHJcbmZ1bmN0aW9uIEVDRmllbGRFbGVtZW50RnAoYixhKXt0aGlzLng9YTt0aGlzLnE9Yn1mdW5jdGlvbiBmZUZwRXF1YWxzKGEpe2lmKGE9PXRoaXMpe3JldHVybiB0cnVlfXJldHVybih0aGlzLnEuZXF1YWxzKGEucSkmJnRoaXMueC5lcXVhbHMoYS54KSl9ZnVuY3Rpb24gZmVGcFRvQmlnSW50ZWdlcigpe3JldHVybiB0aGlzLnh9ZnVuY3Rpb24gZmVGcE5lZ2F0ZSgpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54Lm5lZ2F0ZSgpLm1vZCh0aGlzLnEpKX1mdW5jdGlvbiBmZUZwQWRkKGEpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54LmFkZChhLnRvQmlnSW50ZWdlcigpKS5tb2QodGhpcy5xKSl9ZnVuY3Rpb24gZmVGcFN1YnRyYWN0KGEpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54LnN1YnRyYWN0KGEudG9CaWdJbnRlZ2VyKCkpLm1vZCh0aGlzLnEpKX1mdW5jdGlvbiBmZUZwTXVsdGlwbHkoYSl7cmV0dXJuIG5ldyBFQ0ZpZWxkRWxlbWVudEZwKHRoaXMucSx0aGlzLngubXVsdGlwbHkoYS50b0JpZ0ludGVnZXIoKSkubW9kKHRoaXMucSkpfWZ1bmN0aW9uIGZlRnBTcXVhcmUoKXtyZXR1cm4gbmV3IEVDRmllbGRFbGVtZW50RnAodGhpcy5xLHRoaXMueC5zcXVhcmUoKS5tb2QodGhpcy5xKSl9ZnVuY3Rpb24gZmVGcERpdmlkZShhKXtyZXR1cm4gbmV3IEVDRmllbGRFbGVtZW50RnAodGhpcy5xLHRoaXMueC5tdWx0aXBseShhLnRvQmlnSW50ZWdlcigpLm1vZEludmVyc2UodGhpcy5xKSkubW9kKHRoaXMucSkpfUVDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLmVxdWFscz1mZUZwRXF1YWxzO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLnRvQmlnSW50ZWdlcj1mZUZwVG9CaWdJbnRlZ2VyO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLm5lZ2F0ZT1mZUZwTmVnYXRlO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLmFkZD1mZUZwQWRkO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLnN1YnRyYWN0PWZlRnBTdWJ0cmFjdDtFQ0ZpZWxkRWxlbWVudEZwLnByb3RvdHlwZS5tdWx0aXBseT1mZUZwTXVsdGlwbHk7RUNGaWVsZEVsZW1lbnRGcC5wcm90b3R5cGUuc3F1YXJlPWZlRnBTcXVhcmU7RUNGaWVsZEVsZW1lbnRGcC5wcm90b3R5cGUuZGl2aWRlPWZlRnBEaXZpZGU7ZnVuY3Rpb24gRUNQb2ludEZwKGMsYSxkLGIpe3RoaXMuY3VydmU9Yzt0aGlzLng9YTt0aGlzLnk9ZDtpZihiPT1udWxsKXt0aGlzLno9QmlnSW50ZWdlci5PTkV9ZWxzZXt0aGlzLno9Yn10aGlzLnppbnY9bnVsbH1mdW5jdGlvbiBwb2ludEZwR2V0WCgpe2lmKHRoaXMuemludj09bnVsbCl7dGhpcy56aW52PXRoaXMuei5tb2RJbnZlcnNlKHRoaXMuY3VydmUucSl9cmV0dXJuIHRoaXMuY3VydmUuZnJvbUJpZ0ludGVnZXIodGhpcy54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMuemludikubW9kKHRoaXMuY3VydmUucSkpfWZ1bmN0aW9uIHBvaW50RnBHZXRZKCl7aWYodGhpcy56aW52PT1udWxsKXt0aGlzLnppbnY9dGhpcy56Lm1vZEludmVyc2UodGhpcy5jdXJ2ZS5xKX1yZXR1cm4gdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcih0aGlzLnkudG9CaWdJbnRlZ2VyKCkubXVsdGlwbHkodGhpcy56aW52KS5tb2QodGhpcy5jdXJ2ZS5xKSl9ZnVuY3Rpb24gcG9pbnRGcEVxdWFscyhhKXtpZihhPT10aGlzKXtyZXR1cm4gdHJ1ZX1pZih0aGlzLmlzSW5maW5pdHkoKSl7cmV0dXJuIGEuaXNJbmZpbml0eSgpfWlmKGEuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCl9dmFyIGMsYjtjPWEueS50b0JpZ0ludGVnZXIoKS5tdWx0aXBseSh0aGlzLnopLnN1YnRyYWN0KHRoaXMueS50b0JpZ0ludGVnZXIoKS5tdWx0aXBseShhLnopKS5tb2QodGhpcy5jdXJ2ZS5xKTtpZighYy5lcXVhbHMoQmlnSW50ZWdlci5aRVJPKSl7cmV0dXJuIGZhbHNlfWI9YS54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMueikuc3VidHJhY3QodGhpcy54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KGEueikpLm1vZCh0aGlzLmN1cnZlLnEpO3JldHVybiBiLmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pfWZ1bmN0aW9uIHBvaW50RnBJc0luZmluaXR5KCl7aWYoKHRoaXMueD09bnVsbCkmJih0aGlzLnk9PW51bGwpKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gdGhpcy56LmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pJiYhdGhpcy55LnRvQmlnSW50ZWdlcigpLmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pfWZ1bmN0aW9uIHBvaW50RnBOZWdhdGUoKXtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLmN1cnZlLHRoaXMueCx0aGlzLnkubmVnYXRlKCksdGhpcy56KX1mdW5jdGlvbiBwb2ludEZwQWRkKGwpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gbH1pZihsLmlzSW5maW5pdHkoKSl7cmV0dXJuIHRoaXN9dmFyIHA9bC55LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMueikuc3VidHJhY3QodGhpcy55LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KGwueikpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBvPWwueC50b0JpZ0ludGVnZXIoKS5tdWx0aXBseSh0aGlzLnopLnN1YnRyYWN0KHRoaXMueC50b0JpZ0ludGVnZXIoKS5tdWx0aXBseShsLnopKS5tb2QodGhpcy5jdXJ2ZS5xKTtpZihCaWdJbnRlZ2VyLlpFUk8uZXF1YWxzKG8pKXtpZihCaWdJbnRlZ2VyLlpFUk8uZXF1YWxzKHApKXtyZXR1cm4gdGhpcy50d2ljZSgpfXJldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGo9bmV3IEJpZ0ludGVnZXIoXCIzXCIpO3ZhciBlPXRoaXMueC50b0JpZ0ludGVnZXIoKTt2YXIgbj10aGlzLnkudG9CaWdJbnRlZ2VyKCk7dmFyIGM9bC54LnRvQmlnSW50ZWdlcigpO3ZhciBrPWwueS50b0JpZ0ludGVnZXIoKTt2YXIgbT1vLnNxdWFyZSgpO3ZhciBpPW0ubXVsdGlwbHkobyk7dmFyIGQ9ZS5tdWx0aXBseShtKTt2YXIgZz1wLnNxdWFyZSgpLm11bHRpcGx5KHRoaXMueik7dmFyIGE9Zy5zdWJ0cmFjdChkLnNoaWZ0TGVmdCgxKSkubXVsdGlwbHkobC56KS5zdWJ0cmFjdChpKS5tdWx0aXBseShvKS5tb2QodGhpcy5jdXJ2ZS5xKTt2YXIgaD1kLm11bHRpcGx5KGopLm11bHRpcGx5KHApLnN1YnRyYWN0KG4ubXVsdGlwbHkoaSkpLnN1YnRyYWN0KGcubXVsdGlwbHkocCkpLm11bHRpcGx5KGwueikuYWRkKHAubXVsdGlwbHkoaSkpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBmPWkubXVsdGlwbHkodGhpcy56KS5tdWx0aXBseShsLnopLm1vZCh0aGlzLmN1cnZlLnEpO3JldHVybiBuZXcgRUNQb2ludEZwKHRoaXMuY3VydmUsdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihhKSx0aGlzLmN1cnZlLmZyb21CaWdJbnRlZ2VyKGgpLGYpfWZ1bmN0aW9uIHBvaW50RnBUd2ljZSgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpc31pZih0aGlzLnkudG9CaWdJbnRlZ2VyKCkuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGc9bmV3IEJpZ0ludGVnZXIoXCIzXCIpO3ZhciBjPXRoaXMueC50b0JpZ0ludGVnZXIoKTt2YXIgaD10aGlzLnkudG9CaWdJbnRlZ2VyKCk7dmFyIGU9aC5tdWx0aXBseSh0aGlzLnopO3ZhciBqPWUubXVsdGlwbHkoaCkubW9kKHRoaXMuY3VydmUucSk7dmFyIGk9dGhpcy5jdXJ2ZS5hLnRvQmlnSW50ZWdlcigpO3ZhciBrPWMuc3F1YXJlKCkubXVsdGlwbHkoZyk7aWYoIUJpZ0ludGVnZXIuWkVSTy5lcXVhbHMoaSkpe2s9ay5hZGQodGhpcy56LnNxdWFyZSgpLm11bHRpcGx5KGkpKX1rPWsubW9kKHRoaXMuY3VydmUucSk7dmFyIGI9ay5zcXVhcmUoKS5zdWJ0cmFjdChjLnNoaWZ0TGVmdCgzKS5tdWx0aXBseShqKSkuc2hpZnRMZWZ0KDEpLm11bHRpcGx5KGUpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBmPWsubXVsdGlwbHkoZykubXVsdGlwbHkoYykuc3VidHJhY3Qoai5zaGlmdExlZnQoMSkpLnNoaWZ0TGVmdCgyKS5tdWx0aXBseShqKS5zdWJ0cmFjdChrLnNxdWFyZSgpLm11bHRpcGx5KGspKS5tb2QodGhpcy5jdXJ2ZS5xKTt2YXIgZD1lLnNxdWFyZSgpLm11bHRpcGx5KGUpLnNoaWZ0TGVmdCgzKS5tb2QodGhpcy5jdXJ2ZS5xKTtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLmN1cnZlLHRoaXMuY3VydmUuZnJvbUJpZ0ludGVnZXIoYiksdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihmKSxkKX1mdW5jdGlvbiBwb2ludEZwTXVsdGlwbHkoYil7aWYodGhpcy5pc0luZmluaXR5KCkpe3JldHVybiB0aGlzfWlmKGIuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGc9Yjt2YXIgZj1nLm11bHRpcGx5KG5ldyBCaWdJbnRlZ2VyKFwiM1wiKSk7dmFyIGw9dGhpcy5uZWdhdGUoKTt2YXIgZD10aGlzO3ZhciBjO2ZvcihjPWYuYml0TGVuZ3RoKCktMjtjPjA7LS1jKXtkPWQudHdpY2UoKTt2YXIgYT1mLnRlc3RCaXQoYyk7dmFyIGo9Zy50ZXN0Qml0KGMpO2lmKGEhPWope2Q9ZC5hZGQoYT90aGlzOmwpfX1yZXR1cm4gZH1mdW5jdGlvbiBwb2ludEZwTXVsdGlwbHlUd28oYyxhLGIpe3ZhciBkO2lmKGMuYml0TGVuZ3RoKCk+Yi5iaXRMZW5ndGgoKSl7ZD1jLmJpdExlbmd0aCgpLTF9ZWxzZXtkPWIuYml0TGVuZ3RoKCktMX12YXIgZj10aGlzLmN1cnZlLmdldEluZmluaXR5KCk7dmFyIGU9dGhpcy5hZGQoYSk7d2hpbGUoZD49MCl7Zj1mLnR3aWNlKCk7aWYoYy50ZXN0Qml0KGQpKXtpZihiLnRlc3RCaXQoZCkpe2Y9Zi5hZGQoZSl9ZWxzZXtmPWYuYWRkKHRoaXMpfX1lbHNle2lmKGIudGVzdEJpdChkKSl7Zj1mLmFkZChhKX19LS1kfXJldHVybiBmfUVDUG9pbnRGcC5wcm90b3R5cGUuZ2V0WD1wb2ludEZwR2V0WDtFQ1BvaW50RnAucHJvdG90eXBlLmdldFk9cG9pbnRGcEdldFk7RUNQb2ludEZwLnByb3RvdHlwZS5lcXVhbHM9cG9pbnRGcEVxdWFscztFQ1BvaW50RnAucHJvdG90eXBlLmlzSW5maW5pdHk9cG9pbnRGcElzSW5maW5pdHk7RUNQb2ludEZwLnByb3RvdHlwZS5uZWdhdGU9cG9pbnRGcE5lZ2F0ZTtFQ1BvaW50RnAucHJvdG90eXBlLmFkZD1wb2ludEZwQWRkO0VDUG9pbnRGcC5wcm90b3R5cGUudHdpY2U9cG9pbnRGcFR3aWNlO0VDUG9pbnRGcC5wcm90b3R5cGUubXVsdGlwbHk9cG9pbnRGcE11bHRpcGx5O0VDUG9pbnRGcC5wcm90b3R5cGUubXVsdGlwbHlUd289cG9pbnRGcE11bHRpcGx5VHdvO2Z1bmN0aW9uIEVDQ3VydmVGcChlLGQsYyl7dGhpcy5xPWU7dGhpcy5hPXRoaXMuZnJvbUJpZ0ludGVnZXIoZCk7dGhpcy5iPXRoaXMuZnJvbUJpZ0ludGVnZXIoYyk7dGhpcy5pbmZpbml0eT1uZXcgRUNQb2ludEZwKHRoaXMsbnVsbCxudWxsKX1mdW5jdGlvbiBjdXJ2ZUZwR2V0USgpe3JldHVybiB0aGlzLnF9ZnVuY3Rpb24gY3VydmVGcEdldEEoKXtyZXR1cm4gdGhpcy5hfWZ1bmN0aW9uIGN1cnZlRnBHZXRCKCl7cmV0dXJuIHRoaXMuYn1mdW5jdGlvbiBjdXJ2ZUZwRXF1YWxzKGEpe2lmKGE9PXRoaXMpe3JldHVybiB0cnVlfXJldHVybih0aGlzLnEuZXF1YWxzKGEucSkmJnRoaXMuYS5lcXVhbHMoYS5hKSYmdGhpcy5iLmVxdWFscyhhLmIpKX1mdW5jdGlvbiBjdXJ2ZUZwR2V0SW5maW5pdHkoKXtyZXR1cm4gdGhpcy5pbmZpbml0eX1mdW5jdGlvbiBjdXJ2ZUZwRnJvbUJpZ0ludGVnZXIoYSl7cmV0dXJuIG5ldyBFQ0ZpZWxkRWxlbWVudEZwKHRoaXMucSxhKX1mdW5jdGlvbiBjdXJ2ZUZwRGVjb2RlUG9pbnRIZXgoZCl7c3dpdGNoKHBhcnNlSW50KGQuc3Vic3RyKDAsMiksMTYpKXtjYXNlIDA6cmV0dXJuIHRoaXMuaW5maW5pdHk7Y2FzZSAyOmNhc2UgMzpyZXR1cm4gbnVsbDtjYXNlIDQ6Y2FzZSA2OmNhc2UgNzp2YXIgYT0oZC5sZW5ndGgtMikvMjt2YXIgYz1kLnN1YnN0cigyLGEpO3ZhciBiPWQuc3Vic3RyKGErMixhKTtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLHRoaXMuZnJvbUJpZ0ludGVnZXIobmV3IEJpZ0ludGVnZXIoYywxNikpLHRoaXMuZnJvbUJpZ0ludGVnZXIobmV3IEJpZ0ludGVnZXIoYiwxNikpKTtkZWZhdWx0OnJldHVybiBudWxsfX1FQ0N1cnZlRnAucHJvdG90eXBlLmdldFE9Y3VydmVGcEdldFE7RUNDdXJ2ZUZwLnByb3RvdHlwZS5nZXRBPWN1cnZlRnBHZXRBO0VDQ3VydmVGcC5wcm90b3R5cGUuZ2V0Qj1jdXJ2ZUZwR2V0QjtFQ0N1cnZlRnAucHJvdG90eXBlLmVxdWFscz1jdXJ2ZUZwRXF1YWxzO0VDQ3VydmVGcC5wcm90b3R5cGUuZ2V0SW5maW5pdHk9Y3VydmVGcEdldEluZmluaXR5O0VDQ3VydmVGcC5wcm90b3R5cGUuZnJvbUJpZ0ludGVnZXI9Y3VydmVGcEZyb21CaWdJbnRlZ2VyO0VDQ3VydmVGcC5wcm90b3R5cGUuZGVjb2RlUG9pbnRIZXg9Y3VydmVGcERlY29kZVBvaW50SGV4O1xuLyohIChjKSBTdGVmYW4gVGhvbWFzIHwgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliXHJcbiAqL1xyXG5FQ0ZpZWxkRWxlbWVudEZwLnByb3RvdHlwZS5nZXRCeXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoKHRoaXMudG9CaWdJbnRlZ2VyKCkuYml0TGVuZ3RoKCkrNykvOCl9O0VDUG9pbnRGcC5wcm90b3R5cGUuZ2V0RW5jb2RlZD1mdW5jdGlvbihjKXt2YXIgZD1mdW5jdGlvbihoLGYpe3ZhciBnPWgudG9CeXRlQXJyYXlVbnNpZ25lZCgpO2lmKGY8Zy5sZW5ndGgpe2c9Zy5zbGljZShnLmxlbmd0aC1mKX1lbHNle3doaWxlKGY+Zy5sZW5ndGgpe2cudW5zaGlmdCgwKX19cmV0dXJuIGd9O3ZhciBhPXRoaXMuZ2V0WCgpLnRvQmlnSW50ZWdlcigpO3ZhciBlPXRoaXMuZ2V0WSgpLnRvQmlnSW50ZWdlcigpO3ZhciBiPWQoYSwzMik7aWYoYyl7aWYoZS5pc0V2ZW4oKSl7Yi51bnNoaWZ0KDIpfWVsc2V7Yi51bnNoaWZ0KDMpfX1lbHNle2IudW5zaGlmdCg0KTtiPWIuY29uY2F0KGQoZSwzMikpfXJldHVybiBifTtFQ1BvaW50RnAuZGVjb2RlRnJvbT1mdW5jdGlvbihnLGMpe3ZhciBmPWNbMF07dmFyIGU9Yy5sZW5ndGgtMTt2YXIgZD1jLnNsaWNlKDEsMStlLzIpO3ZhciBiPWMuc2xpY2UoMStlLzIsMStlKTtkLnVuc2hpZnQoMCk7Yi51bnNoaWZ0KDApO3ZhciBhPW5ldyBCaWdJbnRlZ2VyKGQpO3ZhciBoPW5ldyBCaWdJbnRlZ2VyKGIpO3JldHVybiBuZXcgRUNQb2ludEZwKGcsZy5mcm9tQmlnSW50ZWdlcihhKSxnLmZyb21CaWdJbnRlZ2VyKGgpKX07RUNQb2ludEZwLmRlY29kZUZyb21IZXg9ZnVuY3Rpb24oZyxjKXt2YXIgZj1jLnN1YnN0cigwLDIpO3ZhciBlPWMubGVuZ3RoLTI7dmFyIGQ9Yy5zdWJzdHIoMixlLzIpO3ZhciBiPWMuc3Vic3RyKDIrZS8yLGUvMik7dmFyIGE9bmV3IEJpZ0ludGVnZXIoZCwxNik7dmFyIGg9bmV3IEJpZ0ludGVnZXIoYiwxNik7cmV0dXJuIG5ldyBFQ1BvaW50RnAoZyxnLmZyb21CaWdJbnRlZ2VyKGEpLGcuZnJvbUJpZ0ludGVnZXIoaCkpfTtFQ1BvaW50RnAucHJvdG90eXBlLmFkZDJEPWZ1bmN0aW9uKGMpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gY31pZihjLmlzSW5maW5pdHkoKSl7cmV0dXJuIHRoaXN9aWYodGhpcy54LmVxdWFscyhjLngpKXtpZih0aGlzLnkuZXF1YWxzKGMueSkpe3JldHVybiB0aGlzLnR3aWNlKCl9cmV0dXJuIHRoaXMuY3VydmUuZ2V0SW5maW5pdHkoKX12YXIgZz1jLnguc3VidHJhY3QodGhpcy54KTt2YXIgZT1jLnkuc3VidHJhY3QodGhpcy55KTt2YXIgYT1lLmRpdmlkZShnKTt2YXIgZD1hLnNxdWFyZSgpLnN1YnRyYWN0KHRoaXMueCkuc3VidHJhY3QoYy54KTt2YXIgZj1hLm11bHRpcGx5KHRoaXMueC5zdWJ0cmFjdChkKSkuc3VidHJhY3QodGhpcy55KTtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLmN1cnZlLGQsZil9O0VDUG9pbnRGcC5wcm90b3R5cGUudHdpY2UyRD1mdW5jdGlvbigpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpc31pZih0aGlzLnkudG9CaWdJbnRlZ2VyKCkuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGI9dGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihCaWdJbnRlZ2VyLnZhbHVlT2YoMikpO3ZhciBlPXRoaXMuY3VydmUuZnJvbUJpZ0ludGVnZXIoQmlnSW50ZWdlci52YWx1ZU9mKDMpKTt2YXIgYT10aGlzLnguc3F1YXJlKCkubXVsdGlwbHkoZSkuYWRkKHRoaXMuY3VydmUuYSkuZGl2aWRlKHRoaXMueS5tdWx0aXBseShiKSk7dmFyIGM9YS5zcXVhcmUoKS5zdWJ0cmFjdCh0aGlzLngubXVsdGlwbHkoYikpO3ZhciBkPWEubXVsdGlwbHkodGhpcy54LnN1YnRyYWN0KGMpKS5zdWJ0cmFjdCh0aGlzLnkpO3JldHVybiBuZXcgRUNQb2ludEZwKHRoaXMuY3VydmUsYyxkKX07RUNQb2ludEZwLnByb3RvdHlwZS5tdWx0aXBseTJEPWZ1bmN0aW9uKGIpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpc31pZihiLnNpZ251bSgpPT0wKXtyZXR1cm4gdGhpcy5jdXJ2ZS5nZXRJbmZpbml0eSgpfXZhciBnPWI7dmFyIGY9Zy5tdWx0aXBseShuZXcgQmlnSW50ZWdlcihcIjNcIikpO3ZhciBsPXRoaXMubmVnYXRlKCk7dmFyIGQ9dGhpczt2YXIgYztmb3IoYz1mLmJpdExlbmd0aCgpLTI7Yz4wOy0tYyl7ZD1kLnR3aWNlKCk7dmFyIGE9Zi50ZXN0Qml0KGMpO3ZhciBqPWcudGVzdEJpdChjKTtpZihhIT1qKXtkPWQuYWRkMkQoYT90aGlzOmwpfX1yZXR1cm4gZH07RUNQb2ludEZwLnByb3RvdHlwZS5pc09uQ3VydmU9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmdldFgoKS50b0JpZ0ludGVnZXIoKTt2YXIgaT10aGlzLmdldFkoKS50b0JpZ0ludGVnZXIoKTt2YXIgZj10aGlzLmN1cnZlLmdldEEoKS50b0JpZ0ludGVnZXIoKTt2YXIgYz10aGlzLmN1cnZlLmdldEIoKS50b0JpZ0ludGVnZXIoKTt2YXIgaD10aGlzLmN1cnZlLmdldFEoKTt2YXIgZT1pLm11bHRpcGx5KGkpLm1vZChoKTt2YXIgZz1kLm11bHRpcGx5KGQpLm11bHRpcGx5KGQpLmFkZChmLm11bHRpcGx5KGQpKS5hZGQoYykubW9kKGgpO3JldHVybiBlLmVxdWFscyhnKX07RUNQb2ludEZwLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiKFwiK3RoaXMuZ2V0WCgpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkrXCIsXCIrdGhpcy5nZXRZKCkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKStcIilcIn07RUNQb2ludEZwLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBjPXRoaXMuY3VydmUuZ2V0USgpO2lmKHRoaXMuaXNJbmZpbml0eSgpKXt0aHJvdyBuZXcgRXJyb3IoXCJQb2ludCBpcyBhdCBpbmZpbml0eS5cIil9dmFyIGE9dGhpcy5nZXRYKCkudG9CaWdJbnRlZ2VyKCk7dmFyIGI9dGhpcy5nZXRZKCkudG9CaWdJbnRlZ2VyKCk7aWYoYS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpPDB8fGEuY29tcGFyZVRvKGMuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpKT4wKXt0aHJvdyBuZXcgRXJyb3IoXCJ4IGNvb3JkaW5hdGUgb3V0IG9mIGJvdW5kc1wiKX1pZihiLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSk8MHx8Yi5jb21wYXJlVG8oYy5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSkpPjApe3Rocm93IG5ldyBFcnJvcihcInkgY29vcmRpbmF0ZSBvdXQgb2YgYm91bmRzXCIpfWlmKCF0aGlzLmlzT25DdXJ2ZSgpKXt0aHJvdyBuZXcgRXJyb3IoXCJQb2ludCBpcyBub3Qgb24gdGhlIGN1cnZlLlwiKX1pZih0aGlzLm11bHRpcGx5KGMpLmlzSW5maW5pdHkoKSl7dGhyb3cgbmV3IEVycm9yKFwiUG9pbnQgaXMgbm90IGEgc2NhbGFyIG11bHRpcGxlIG9mIEcuXCIpfXJldHVybiB0cnVlfTtcbi8qISBNaWtlIFNhbXVlbCAoYykgMjAwOSB8IGNvZGUuZ29vZ2xlLmNvbS9wL2pzb24tc2Fucy1ldmFsXHJcbiAqL1xyXG52YXIganNvblBhcnNlPShmdW5jdGlvbigpe3ZhciBlPVwiKD86LT9cXFxcYig/OjB8WzEtOV1bMC05XSopKD86XFxcXC5bMC05XSspPyg/OltlRV1bKy1dP1swLTldKyk/XFxcXGIpXCI7dmFyIGo9Jyg/OlteXFxcXDAtXFxcXHgwOFxcXFx4MGEtXFxcXHgxZlwiXFxcXFxcXFxdfFxcXFxcXFxcKD86W1wiL1xcXFxcXFxcYmZucnRdfHVbMC05QS1GYS1mXXs0fSkpJzt2YXIgaT0nKD86XCInK2orJypcIiknO3ZhciBkPW5ldyBSZWdFeHAoXCIoPzpmYWxzZXx0cnVlfG51bGx8W1xcXFx7XFxcXH1cXFxcW1xcXFxdXXxcIitlK1wifFwiK2krXCIpXCIsXCJnXCIpO3ZhciBrPW5ldyBSZWdFeHAoXCJcXFxcXFxcXCg/OihbXnVdKXx1KC57NH0pKVwiLFwiZ1wiKTt2YXIgZz17J1wiJzonXCInLFwiL1wiOlwiL1wiLFwiXFxcXFwiOlwiXFxcXFwiLGI6XCJcXGJcIixmOlwiXFxmXCIsbjpcIlxcblwiLHI6XCJcXHJcIix0OlwiXFx0XCJ9O2Z1bmN0aW9uIGgobCxtLG4pe3JldHVybiBtP2dbbV06U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChuLDE2KSl9dmFyIGM9bmV3IFN0cmluZyhcIlwiKTt2YXIgYT1cIlxcXFxcIjt2YXIgZj17XCJ7XCI6T2JqZWN0LFwiW1wiOkFycmF5fTt2YXIgYj1PYmplY3QuaGFzT3duUHJvcGVydHk7cmV0dXJuIGZ1bmN0aW9uKHUscSl7dmFyIHA9dS5tYXRjaChkKTt2YXIgeDt2YXIgdj1wWzBdO3ZhciBsPWZhbHNlO2lmKFwie1wiPT09dil7eD17fX1lbHNle2lmKFwiW1wiPT09dil7eD1bXX1lbHNle3g9W107bD10cnVlfX12YXIgdDt2YXIgcj1beF07Zm9yKHZhciBvPTEtbCxtPXAubGVuZ3RoO288bTsrK28pe3Y9cFtvXTt2YXIgdztzd2l0Y2godi5jaGFyQ29kZUF0KDApKXtkZWZhdWx0Onc9clswXTt3W3R8fHcubGVuZ3RoXT0rKHYpO3Q9dm9pZCAwO2JyZWFrO2Nhc2UgMzQ6dj12LnN1YnN0cmluZygxLHYubGVuZ3RoLTEpO2lmKHYuaW5kZXhPZihhKSE9PS0xKXt2PXYucmVwbGFjZShrLGgpfXc9clswXTtpZighdCl7aWYodyBpbnN0YW5jZW9mIEFycmF5KXt0PXcubGVuZ3RofWVsc2V7dD12fHxjO2JyZWFrfX13W3RdPXY7dD12b2lkIDA7YnJlYWs7Y2FzZSA5MTp3PXJbMF07ci51bnNoaWZ0KHdbdHx8dy5sZW5ndGhdPVtdKTt0PXZvaWQgMDticmVhaztjYXNlIDkzOnIuc2hpZnQoKTticmVhaztjYXNlIDEwMjp3PXJbMF07d1t0fHx3Lmxlbmd0aF09ZmFsc2U7dD12b2lkIDA7YnJlYWs7Y2FzZSAxMTA6dz1yWzBdO3dbdHx8dy5sZW5ndGhdPW51bGw7dD12b2lkIDA7YnJlYWs7Y2FzZSAxMTY6dz1yWzBdO3dbdHx8dy5sZW5ndGhdPXRydWU7dD12b2lkIDA7YnJlYWs7Y2FzZSAxMjM6dz1yWzBdO3IudW5zaGlmdCh3W3R8fHcubGVuZ3RoXT17fSk7dD12b2lkIDA7YnJlYWs7Y2FzZSAxMjU6ci5zaGlmdCgpO2JyZWFrfX1pZihsKXtpZihyLmxlbmd0aCE9PTEpe3Rocm93IG5ldyBFcnJvcigpfXg9eFswXX1lbHNle2lmKHIubGVuZ3RoKXt0aHJvdyBuZXcgRXJyb3IoKX19aWYocSl7dmFyIHM9ZnVuY3Rpb24oQyxCKXt2YXIgRD1DW0JdO2lmKEQmJnR5cGVvZiBEPT09XCJvYmplY3RcIil7dmFyIG49bnVsbDtmb3IodmFyIHogaW4gRCl7aWYoYi5jYWxsKEQseikmJkQhPT1DKXt2YXIgeT1zKEQseik7aWYoeSE9PXZvaWQgMCl7RFt6XT15fWVsc2V7aWYoIW4pe249W119bi5wdXNoKHopfX19aWYobil7Zm9yKHZhciBBPW4ubGVuZ3RoOy0tQT49MDspe2RlbGV0ZSBEW25bQV1dfX19cmV0dXJuIHEuY2FsbChDLEIsRCl9O3g9cyh7XCJcIjp4fSxcIlwiKX1yZXR1cm4geH19KSgpO1xuaWYodHlwZW9mIEtKVVI9PVwidW5kZWZpbmVkXCJ8fCFLSlVSKXtLSlVSPXt9fWlmKHR5cGVvZiBLSlVSLmFzbjE9PVwidW5kZWZpbmVkXCJ8fCFLSlVSLmFzbjEpe0tKVVIuYXNuMT17fX1LSlVSLmFzbjEuQVNOMVV0aWw9bmV3IGZ1bmN0aW9uKCl7dGhpcy5pbnRlZ2VyVG9CeXRlSGV4PWZ1bmN0aW9uKGEpe3ZhciBiPWEudG9TdHJpbmcoMTYpO2lmKChiLmxlbmd0aCUyKT09MSl7Yj1cIjBcIitifXJldHVybiBifTt0aGlzLmJpZ0ludFRvTWluVHdvc0NvbXBsZW1lbnRzSGV4PWZ1bmN0aW9uKGope3ZhciBmPWoudG9TdHJpbmcoMTYpO2lmKGYuc3Vic3RyKDAsMSkhPVwiLVwiKXtpZihmLmxlbmd0aCUyPT0xKXtmPVwiMFwiK2Z9ZWxzZXtpZighZi5tYXRjaCgvXlswLTddLykpe2Y9XCIwMFwiK2Z9fX1lbHNle3ZhciBhPWYuc3Vic3RyKDEpO3ZhciBlPWEubGVuZ3RoO2lmKGUlMj09MSl7ZSs9MX1lbHNle2lmKCFmLm1hdGNoKC9eWzAtN10vKSl7ZSs9Mn19dmFyIGc9XCJcIjtmb3IodmFyIGQ9MDtkPGU7ZCsrKXtnKz1cImZcIn12YXIgYz1uZXcgQmlnSW50ZWdlcihnLDE2KTt2YXIgYj1jLnhvcihqKS5hZGQoQmlnSW50ZWdlci5PTkUpO2Y9Yi50b1N0cmluZygxNikucmVwbGFjZSgvXi0vLFwiXCIpfXJldHVybiBmfTt0aGlzLmdldFBFTVN0cmluZ0Zyb21IZXg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaGV4dG9wZW0oYSxiKX07dGhpcy5uZXdPYmplY3Q9ZnVuY3Rpb24oayl7dmFyIEQ9S0pVUixuPUQuYXNuMSx6PW4uREVSQm9vbGVhbixlPW4uREVSSW50ZWdlcixzPW4uREVSQml0U3RyaW5nLGg9bi5ERVJPY3RldFN0cmluZyx2PW4uREVSTnVsbCx3PW4uREVST2JqZWN0SWRlbnRpZmllcixsPW4uREVSRW51bWVyYXRlZCxnPW4uREVSVVRGOFN0cmluZyxmPW4uREVSTnVtZXJpY1N0cmluZyx5PW4uREVSUHJpbnRhYmxlU3RyaW5nLHU9bi5ERVJUZWxldGV4U3RyaW5nLHA9bi5ERVJJQTVTdHJpbmcsQz1uLkRFUlVUQ1RpbWUsaj1uLkRFUkdlbmVyYWxpemVkVGltZSxtPW4uREVSU2VxdWVuY2UsYz1uLkRFUlNldCxyPW4uREVSVGFnZ2VkT2JqZWN0LG89bi5BU04xVXRpbC5uZXdPYmplY3Q7dmFyIHQ9T2JqZWN0LmtleXMoayk7aWYodC5sZW5ndGghPTEpe3Rocm93XCJrZXkgb2YgcGFyYW0gc2hhbGwgYmUgb25seSBvbmUuXCJ9dmFyIEY9dFswXTtpZihcIjpib29sOmludDpiaXRzdHI6b2N0c3RyOm51bGw6b2lkOmVudW06dXRmOHN0cjpudW1zdHI6cHJuc3RyOnRlbHN0cjppYTVzdHI6dXRjdGltZTpnZW50aW1lOnNlcTpzZXQ6dGFnOlwiLmluZGV4T2YoXCI6XCIrRitcIjpcIik9PS0xKXt0aHJvd1widW5kZWZpbmVkIGtleTogXCIrRn1pZihGPT1cImJvb2xcIil7cmV0dXJuIG5ldyB6KGtbRl0pfWlmKEY9PVwiaW50XCIpe3JldHVybiBuZXcgZShrW0ZdKX1pZihGPT1cImJpdHN0clwiKXtyZXR1cm4gbmV3IHMoa1tGXSl9aWYoRj09XCJvY3RzdHJcIil7cmV0dXJuIG5ldyBoKGtbRl0pfWlmKEY9PVwibnVsbFwiKXtyZXR1cm4gbmV3IHYoa1tGXSl9aWYoRj09XCJvaWRcIil7cmV0dXJuIG5ldyB3KGtbRl0pfWlmKEY9PVwiZW51bVwiKXtyZXR1cm4gbmV3IGwoa1tGXSl9aWYoRj09XCJ1dGY4c3RyXCIpe3JldHVybiBuZXcgZyhrW0ZdKX1pZihGPT1cIm51bXN0clwiKXtyZXR1cm4gbmV3IGYoa1tGXSl9aWYoRj09XCJwcm5zdHJcIil7cmV0dXJuIG5ldyB5KGtbRl0pfWlmKEY9PVwidGVsc3RyXCIpe3JldHVybiBuZXcgdShrW0ZdKX1pZihGPT1cImlhNXN0clwiKXtyZXR1cm4gbmV3IHAoa1tGXSl9aWYoRj09XCJ1dGN0aW1lXCIpe3JldHVybiBuZXcgQyhrW0ZdKX1pZihGPT1cImdlbnRpbWVcIil7cmV0dXJuIG5ldyBqKGtbRl0pfWlmKEY9PVwic2VxXCIpe3ZhciBkPWtbRl07dmFyIEU9W107Zm9yKHZhciB4PTA7eDxkLmxlbmd0aDt4Kyspe3ZhciBCPW8oZFt4XSk7RS5wdXNoKEIpfXJldHVybiBuZXcgbSh7YXJyYXk6RX0pfWlmKEY9PVwic2V0XCIpe3ZhciBkPWtbRl07dmFyIEU9W107Zm9yKHZhciB4PTA7eDxkLmxlbmd0aDt4Kyspe3ZhciBCPW8oZFt4XSk7RS5wdXNoKEIpfXJldHVybiBuZXcgYyh7YXJyYXk6RX0pfWlmKEY9PVwidGFnXCIpe3ZhciBBPWtbRl07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEEpPT09XCJbb2JqZWN0IEFycmF5XVwiJiZBLmxlbmd0aD09Myl7dmFyIHE9byhBWzJdKTtyZXR1cm4gbmV3IHIoe3RhZzpBWzBdLGV4cGxpY2l0OkFbMV0sb2JqOnF9KX1lbHNle3ZhciBiPXt9O2lmKEEuZXhwbGljaXQhPT11bmRlZmluZWQpe2IuZXhwbGljaXQ9QS5leHBsaWNpdH1pZihBLnRhZyE9PXVuZGVmaW5lZCl7Yi50YWc9QS50YWd9aWYoQS5vYmo9PT11bmRlZmluZWQpe3Rocm93XCJvYmogc2hhbGwgYmUgc3BlY2lmaWVkIGZvciAndGFnJy5cIn1iLm9iaj1vKEEub2JqKTtyZXR1cm4gbmV3IHIoYil9fX07dGhpcy5qc29uVG9BU04xSEVYPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMubmV3T2JqZWN0KGIpO3JldHVybiBhLmdldEVuY29kZWRIZXgoKX19O0tKVVIuYXNuMS5BU04xVXRpbC5vaWRIZXhUb0ludD1mdW5jdGlvbihhKXt2YXIgaj1cIlwiO3ZhciBrPXBhcnNlSW50KGEuc3Vic3RyKDAsMiksMTYpO3ZhciBkPU1hdGguZmxvb3Ioay80MCk7dmFyIGM9ayU0MDt2YXIgaj1kK1wiLlwiK2M7dmFyIGU9XCJcIjtmb3IodmFyIGY9MjtmPGEubGVuZ3RoO2YrPTIpe3ZhciBnPXBhcnNlSW50KGEuc3Vic3RyKGYsMiksMTYpO3ZhciBoPShcIjAwMDAwMDAwXCIrZy50b1N0cmluZygyKSkuc2xpY2UoLTgpO2U9ZStoLnN1YnN0cigxLDcpO2lmKGguc3Vic3RyKDAsMSk9PVwiMFwiKXt2YXIgYj1uZXcgQmlnSW50ZWdlcihlLDIpO2o9aitcIi5cIitiLnRvU3RyaW5nKDEwKTtlPVwiXCJ9fXJldHVybiBqfTtLSlVSLmFzbjEuQVNOMVV0aWwub2lkSW50VG9IZXg9ZnVuY3Rpb24oZil7dmFyIGU9ZnVuY3Rpb24oYSl7dmFyIGs9YS50b1N0cmluZygxNik7aWYoay5sZW5ndGg9PTEpe2s9XCIwXCIra31yZXR1cm4ga307dmFyIGQ9ZnVuY3Rpb24obyl7dmFyIG49XCJcIjt2YXIgaz1uZXcgQmlnSW50ZWdlcihvLDEwKTt2YXIgYT1rLnRvU3RyaW5nKDIpO3ZhciBsPTctYS5sZW5ndGglNztpZihsPT03KXtsPTB9dmFyIHE9XCJcIjtmb3IodmFyIG09MDttPGw7bSsrKXtxKz1cIjBcIn1hPXErYTtmb3IodmFyIG09MDttPGEubGVuZ3RoLTE7bSs9Nyl7dmFyIHA9YS5zdWJzdHIobSw3KTtpZihtIT1hLmxlbmd0aC03KXtwPVwiMVwiK3B9bis9ZShwYXJzZUludChwLDIpKX1yZXR1cm4gbn07aWYoIWYubWF0Y2goL15bMC05Ll0rJC8pKXt0aHJvd1wibWFsZm9ybWVkIG9pZCBzdHJpbmc6IFwiK2Z9dmFyIGc9XCJcIjt2YXIgYj1mLnNwbGl0KFwiLlwiKTt2YXIgaj1wYXJzZUludChiWzBdKSo0MCtwYXJzZUludChiWzFdKTtnKz1lKGopO2Iuc3BsaWNlKDAsMik7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe2crPWQoYltjXSl9cmV0dXJuIGd9O0tKVVIuYXNuMS5BU04xT2JqZWN0PWZ1bmN0aW9uKCl7dmFyIGM9dHJ1ZTt2YXIgYj1udWxsO3ZhciBkPVwiMDBcIjt2YXIgZT1cIjAwXCI7dmFyIGE9XCJcIjt0aGlzLmdldExlbmd0aEhleEZyb21WYWx1ZT1mdW5jdGlvbigpe2lmKHR5cGVvZiB0aGlzLmhWPT1cInVuZGVmaW5lZFwifHx0aGlzLmhWPT1udWxsKXt0aHJvd1widGhpcy5oViBpcyBudWxsIG9yIHVuZGVmaW5lZC5cIn1pZih0aGlzLmhWLmxlbmd0aCUyPT0xKXt0aHJvd1widmFsdWUgaGV4IG11c3QgYmUgZXZlbiBsZW5ndGg6IG49XCIrYS5sZW5ndGgrXCIsdj1cIit0aGlzLmhWfXZhciBpPXRoaXMuaFYubGVuZ3RoLzI7dmFyIGg9aS50b1N0cmluZygxNik7aWYoaC5sZW5ndGglMj09MSl7aD1cIjBcIitofWlmKGk8MTI4KXtyZXR1cm4gaH1lbHNle3ZhciBnPWgubGVuZ3RoLzI7aWYoZz4xNSl7dGhyb3dcIkFTTi4xIGxlbmd0aCB0b28gbG9uZyB0byByZXByZXNlbnQgYnkgOHg6IG4gPSBcIitpLnRvU3RyaW5nKDE2KX12YXIgZj0xMjgrZztyZXR1cm4gZi50b1N0cmluZygxNikraH19O3RoaXMuZ2V0RW5jb2RlZEhleD1mdW5jdGlvbigpe2lmKHRoaXMuaFRMVj09bnVsbHx8dGhpcy5pc01vZGlmaWVkKXt0aGlzLmhWPXRoaXMuZ2V0RnJlc2hWYWx1ZUhleCgpO3RoaXMuaEw9dGhpcy5nZXRMZW5ndGhIZXhGcm9tVmFsdWUoKTt0aGlzLmhUTFY9dGhpcy5oVCt0aGlzLmhMK3RoaXMuaFY7dGhpcy5pc01vZGlmaWVkPWZhbHNlfXJldHVybiB0aGlzLmhUTFZ9O3RoaXMuZ2V0VmFsdWVIZXg9ZnVuY3Rpb24oKXt0aGlzLmdldEVuY29kZWRIZXgoKTtyZXR1cm4gdGhpcy5oVn07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuXCJcIn19O0tKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZz1mdW5jdGlvbihjKXtLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3ZhciBiPW51bGw7dmFyIGE9bnVsbDt0aGlzLmdldFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN9O3RoaXMuc2V0U3RyaW5nPWZ1bmN0aW9uKGQpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMucz1kO3RoaXMuaFY9dXRmOHRvaGV4KHRoaXMucykudG9Mb3dlckNhc2UoKX07dGhpcy5zZXRTdHJpbmdIZXg9ZnVuY3Rpb24oZCl7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5zPW51bGw7dGhpcy5oVj1kfTt0aGlzLmdldEZyZXNoVmFsdWVIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oVn07aWYodHlwZW9mIGMhPVwidW5kZWZpbmVkXCIpe2lmKHR5cGVvZiBjPT1cInN0cmluZ1wiKXt0aGlzLnNldFN0cmluZyhjKX1lbHNle2lmKHR5cGVvZiBjLnN0ciE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRTdHJpbmcoYy5zdHIpfWVsc2V7aWYodHlwZW9mIGMuaGV4IT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldFN0cmluZ0hleChjLmhleCl9fX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJpbmcsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJBYnN0cmFjdFRpbWU9ZnVuY3Rpb24oYyl7S0pVUi5hc24xLkRFUkFic3RyYWN0VGltZS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dmFyIGI9bnVsbDt2YXIgYT1udWxsO3RoaXMubG9jYWxEYXRlVG9VVEM9ZnVuY3Rpb24oZil7dXRjPWYuZ2V0VGltZSgpKyhmLmdldFRpbWV6b25lT2Zmc2V0KCkqNjAwMDApO3ZhciBlPW5ldyBEYXRlKHV0Yyk7cmV0dXJuIGV9O3RoaXMuZm9ybWF0RGF0ZT1mdW5jdGlvbihtLG8sZSl7dmFyIGc9dGhpcy56ZXJvUGFkZGluZzt2YXIgbj10aGlzLmxvY2FsRGF0ZVRvVVRDKG0pO3ZhciBwPVN0cmluZyhuLmdldEZ1bGxZZWFyKCkpO2lmKG89PVwidXRjXCIpe3A9cC5zdWJzdHIoMiwyKX12YXIgbD1nKFN0cmluZyhuLmdldE1vbnRoKCkrMSksMik7dmFyIHE9ZyhTdHJpbmcobi5nZXREYXRlKCkpLDIpO3ZhciBoPWcoU3RyaW5nKG4uZ2V0SG91cnMoKSksMik7dmFyIGk9ZyhTdHJpbmcobi5nZXRNaW51dGVzKCkpLDIpO3ZhciBqPWcoU3RyaW5nKG4uZ2V0U2Vjb25kcygpKSwyKTt2YXIgcj1wK2wrcStoK2krajtpZihlPT09dHJ1ZSl7dmFyIGY9bi5nZXRNaWxsaXNlY29uZHMoKTtpZihmIT0wKXt2YXIgaz1nKFN0cmluZyhmKSwzKTtrPWsucmVwbGFjZSgvWzBdKyQvLFwiXCIpO3I9citcIi5cIitrfX1yZXR1cm4gcitcIlpcIn07dGhpcy56ZXJvUGFkZGluZz1mdW5jdGlvbihlLGQpe2lmKGUubGVuZ3RoPj1kKXtyZXR1cm4gZX1yZXR1cm4gbmV3IEFycmF5KGQtZS5sZW5ndGgrMSkuam9pbihcIjBcIikrZX07dGhpcy5nZXRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfTt0aGlzLnNldFN0cmluZz1mdW5jdGlvbihkKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLnM9ZDt0aGlzLmhWPXN0b2hleChkKX07dGhpcy5zZXRCeURhdGVWYWx1ZT1mdW5jdGlvbihoLGosZSxkLGYsZyl7dmFyIGk9bmV3IERhdGUoRGF0ZS5VVEMoaCxqLTEsZSxkLGYsZywwKSk7dGhpcy5zZXRCeURhdGUoaSl9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUkFic3RyYWN0VGltZSxLSlVSLmFzbjEuQVNOMU9iamVjdCk7S0pVUi5hc24xLkRFUkFic3RyYWN0U3RydWN0dXJlZD1mdW5jdGlvbihiKXtLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3ZhciBhPW51bGw7dGhpcy5zZXRCeUFTTjFPYmplY3RBcnJheT1mdW5jdGlvbihjKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmFzbjFBcnJheT1jfTt0aGlzLmFwcGVuZEFTTjFPYmplY3Q9ZnVuY3Rpb24oYyl7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5hc24xQXJyYXkucHVzaChjKX07dGhpcy5hc24xQXJyYXk9bmV3IEFycmF5KCk7aWYodHlwZW9mIGIhPVwidW5kZWZpbmVkXCIpe2lmKHR5cGVvZiBiLmFycmF5IT1cInVuZGVmaW5lZFwiKXt0aGlzLmFzbjFBcnJheT1iLmFycmF5fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cnVjdHVyZWQsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJCb29sZWFuPWZ1bmN0aW9uKCl7S0pVUi5hc24xLkRFUkJvb2xlYW4uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3RoaXMuaFQ9XCIwMVwiO3RoaXMuaFRMVj1cIjAxMDFmZlwifTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSQm9vbGVhbixLSlVSLmFzbjEuQVNOMU9iamVjdCk7S0pVUi5hc24xLkRFUkludGVnZXI9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUkludGVnZXIuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3RoaXMuaFQ9XCIwMlwiO3RoaXMuc2V0QnlCaWdJbnRlZ2VyPWZ1bmN0aW9uKGIpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMuaFY9S0pVUi5hc24xLkFTTjFVdGlsLmJpZ0ludFRvTWluVHdvc0NvbXBsZW1lbnRzSGV4KGIpfTt0aGlzLnNldEJ5SW50ZWdlcj1mdW5jdGlvbihjKXt2YXIgYj1uZXcgQmlnSW50ZWdlcihTdHJpbmcoYyksMTApO3RoaXMuc2V0QnlCaWdJbnRlZ2VyKGIpfTt0aGlzLnNldFZhbHVlSGV4PWZ1bmN0aW9uKGIpe3RoaXMuaFY9Yn07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaFZ9O2lmKHR5cGVvZiBhIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYS5iaWdpbnQhPVwidW5kZWZpbmVkXCIpe3RoaXMuc2V0QnlCaWdJbnRlZ2VyKGEuYmlnaW50KX1lbHNle2lmKHR5cGVvZiBhW1wiaW50XCJdIT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldEJ5SW50ZWdlcihhW1wiaW50XCJdKX1lbHNle2lmKHR5cGVvZiBhPT1cIm51bWJlclwiKXt0aGlzLnNldEJ5SW50ZWdlcihhKX1lbHNle2lmKHR5cGVvZiBhLmhleCE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRWYWx1ZUhleChhLmhleCl9fX19fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUkludGVnZXIsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJCaXRTdHJpbmc9ZnVuY3Rpb24oYil7aWYoYiE9PXVuZGVmaW5lZCYmdHlwZW9mIGIub2JqIT09XCJ1bmRlZmluZWRcIil7dmFyIGE9S0pVUi5hc24xLkFTTjFVdGlsLm5ld09iamVjdChiLm9iaik7Yi5oZXg9XCIwMFwiK2EuZ2V0RW5jb2RlZEhleCgpfUtKVVIuYXNuMS5ERVJCaXRTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3RoaXMuaFQ9XCIwM1wiO3RoaXMuc2V0SGV4VmFsdWVJbmNsdWRpbmdVbnVzZWRCaXRzPWZ1bmN0aW9uKGMpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMuaFY9Y307dGhpcy5zZXRVbnVzZWRCaXRzQW5kSGV4VmFsdWU9ZnVuY3Rpb24oYyxlKXtpZihjPDB8fDc8Yyl7dGhyb3dcInVudXNlZCBiaXRzIHNoYWxsIGJlIGZyb20gMCB0byA3OiB1ID0gXCIrY312YXIgZD1cIjBcIitjO3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMuaFY9ZCtlfTt0aGlzLnNldEJ5QmluYXJ5U3RyaW5nPWZ1bmN0aW9uKGUpe2U9ZS5yZXBsYWNlKC8wKyQvLFwiXCIpO3ZhciBmPTgtZS5sZW5ndGglODtpZihmPT04KXtmPTB9Zm9yKHZhciBnPTA7Zzw9ZjtnKyspe2UrPVwiMFwifXZhciBqPVwiXCI7Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aC0xO2crPTgpe3ZhciBkPWUuc3Vic3RyKGcsOCk7dmFyIGM9cGFyc2VJbnQoZCwyKS50b1N0cmluZygxNik7aWYoYy5sZW5ndGg9PTEpe2M9XCIwXCIrY31qKz1jfXRoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMuaFY9XCIwXCIrZitqfTt0aGlzLnNldEJ5Qm9vbGVhbkFycmF5PWZ1bmN0aW9uKGUpe3ZhciBkPVwiXCI7Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe2lmKGVbY109PXRydWUpe2QrPVwiMVwifWVsc2V7ZCs9XCIwXCJ9fXRoaXMuc2V0QnlCaW5hcnlTdHJpbmcoZCl9O3RoaXMubmV3RmFsc2VBcnJheT1mdW5jdGlvbihlKXt2YXIgYz1uZXcgQXJyYXkoZSk7Zm9yKHZhciBkPTA7ZDxlO2QrKyl7Y1tkXT1mYWxzZX1yZXR1cm4gY307dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaFZ9O2lmKHR5cGVvZiBiIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYj09XCJzdHJpbmdcIiYmYi50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eWzAtOWEtZl0rJC8pKXt0aGlzLnNldEhleFZhbHVlSW5jbHVkaW5nVW51c2VkQml0cyhiKX1lbHNle2lmKHR5cGVvZiBiLmhleCE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRIZXhWYWx1ZUluY2x1ZGluZ1VudXNlZEJpdHMoYi5oZXgpfWVsc2V7aWYodHlwZW9mIGIuYmluIT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldEJ5QmluYXJ5U3RyaW5nKGIuYmluKX1lbHNle2lmKHR5cGVvZiBiLmFycmF5IT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldEJ5Qm9vbGVhbkFycmF5KGIuYXJyYXkpfX19fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJCaXRTdHJpbmcsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJPY3RldFN0cmluZz1mdW5jdGlvbihiKXtpZihiIT09dW5kZWZpbmVkJiZ0eXBlb2YgYi5vYmohPT1cInVuZGVmaW5lZFwiKXt2YXIgYT1LSlVSLmFzbjEuQVNOMVV0aWwubmV3T2JqZWN0KGIub2JqKTtiLmhleD1hLmdldEVuY29kZWRIZXgoKX1LSlVSLmFzbjEuREVST2N0ZXRTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYik7dGhpcy5oVD1cIjA0XCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJPY3RldFN0cmluZyxLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJpbmcpO0tKVVIuYXNuMS5ERVJOdWxsPWZ1bmN0aW9uKCl7S0pVUi5hc24xLkRFUk51bGwuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3RoaXMuaFQ9XCIwNVwiO3RoaXMuaFRMVj1cIjA1MDBcIn07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUk51bGwsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJPYmplY3RJZGVudGlmaWVyPWZ1bmN0aW9uKGMpe3ZhciBiPWZ1bmN0aW9uKGQpe3ZhciBlPWQudG9TdHJpbmcoMTYpO2lmKGUubGVuZ3RoPT0xKXtlPVwiMFwiK2V9cmV0dXJuIGV9O3ZhciBhPWZ1bmN0aW9uKGspe3ZhciBqPVwiXCI7dmFyIGU9bmV3IEJpZ0ludGVnZXIoaywxMCk7dmFyIGQ9ZS50b1N0cmluZygyKTt2YXIgZj03LWQubGVuZ3RoJTc7aWYoZj09Nyl7Zj0wfXZhciBtPVwiXCI7Zm9yKHZhciBnPTA7ZzxmO2crKyl7bSs9XCIwXCJ9ZD1tK2Q7Zm9yKHZhciBnPTA7ZzxkLmxlbmd0aC0xO2crPTcpe3ZhciBsPWQuc3Vic3RyKGcsNyk7aWYoZyE9ZC5sZW5ndGgtNyl7bD1cIjFcIitsfWorPWIocGFyc2VJbnQobCwyKSl9cmV0dXJuIGp9O0tKVVIuYXNuMS5ERVJPYmplY3RJZGVudGlmaWVyLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMDZcIjt0aGlzLnNldFZhbHVlSGV4PWZ1bmN0aW9uKGQpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMucz1udWxsO3RoaXMuaFY9ZH07dGhpcy5zZXRWYWx1ZU9pZFN0cmluZz1mdW5jdGlvbihmKXtpZighZi5tYXRjaCgvXlswLTkuXSskLykpe3Rocm93XCJtYWxmb3JtZWQgb2lkIHN0cmluZzogXCIrZn12YXIgZz1cIlwiO3ZhciBkPWYuc3BsaXQoXCIuXCIpO3ZhciBqPXBhcnNlSW50KGRbMF0pKjQwK3BhcnNlSW50KGRbMV0pO2crPWIoaik7ZC5zcGxpY2UoMCwyKTtmb3IodmFyIGU9MDtlPGQubGVuZ3RoO2UrKyl7Zys9YShkW2VdKX10aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLnM9bnVsbDt0aGlzLmhWPWd9O3RoaXMuc2V0VmFsdWVOYW1lPWZ1bmN0aW9uKGUpe3ZhciBkPUtKVVIuYXNuMS54NTA5Lk9JRC5uYW1lMm9pZChlKTtpZihkIT09XCJcIil7dGhpcy5zZXRWYWx1ZU9pZFN0cmluZyhkKX1lbHNle3Rocm93XCJERVJPYmplY3RJZGVudGlmaWVyIG9pZE5hbWUgdW5kZWZpbmVkOiBcIitlfX07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaFZ9O2lmKGMhPT11bmRlZmluZWQpe2lmKHR5cGVvZiBjPT09XCJzdHJpbmdcIil7aWYoYy5tYXRjaCgvXlswLTJdLlswLTkuXSskLykpe3RoaXMuc2V0VmFsdWVPaWRTdHJpbmcoYyl9ZWxzZXt0aGlzLnNldFZhbHVlTmFtZShjKX19ZWxzZXtpZihjLm9pZCE9PXVuZGVmaW5lZCl7dGhpcy5zZXRWYWx1ZU9pZFN0cmluZyhjLm9pZCl9ZWxzZXtpZihjLmhleCE9PXVuZGVmaW5lZCl7dGhpcy5zZXRWYWx1ZUhleChjLmhleCl9ZWxzZXtpZihjLm5hbWUhPT11bmRlZmluZWQpe3RoaXMuc2V0VmFsdWVOYW1lKGMubmFtZSl9fX19fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUk9iamVjdElkZW50aWZpZXIsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJFbnVtZXJhdGVkPWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJFbnVtZXJhdGVkLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMGFcIjt0aGlzLnNldEJ5QmlnSW50ZWdlcj1mdW5jdGlvbihiKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmhWPUtKVVIuYXNuMS5BU04xVXRpbC5iaWdJbnRUb01pblR3b3NDb21wbGVtZW50c0hleChiKX07dGhpcy5zZXRCeUludGVnZXI9ZnVuY3Rpb24oYyl7dmFyIGI9bmV3IEJpZ0ludGVnZXIoU3RyaW5nKGMpLDEwKTt0aGlzLnNldEJ5QmlnSW50ZWdlcihiKX07dGhpcy5zZXRWYWx1ZUhleD1mdW5jdGlvbihiKXt0aGlzLmhWPWJ9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfTtpZih0eXBlb2YgYSE9XCJ1bmRlZmluZWRcIil7aWYodHlwZW9mIGFbXCJpbnRcIl0hPVwidW5kZWZpbmVkXCIpe3RoaXMuc2V0QnlJbnRlZ2VyKGFbXCJpbnRcIl0pfWVsc2V7aWYodHlwZW9mIGE9PVwibnVtYmVyXCIpe3RoaXMuc2V0QnlJbnRlZ2VyKGEpfWVsc2V7aWYodHlwZW9mIGEuaGV4IT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldFZhbHVlSGV4KGEuaGV4KX19fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJFbnVtZXJhdGVkLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVSVVRGOFN0cmluZz1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSVVRGOFN0cmluZy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt0aGlzLmhUPVwiMGNcIn07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUlVURjhTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSTnVtZXJpY1N0cmluZz1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSTnVtZXJpY1N0cmluZy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt0aGlzLmhUPVwiMTJcIn07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUk51bWVyaWNTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSUHJpbnRhYmxlU3RyaW5nPWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJQcmludGFibGVTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjEzXCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJQcmludGFibGVTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSVGVsZXRleFN0cmluZz1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSVGVsZXRleFN0cmluZy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt0aGlzLmhUPVwiMTRcIn07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUlRlbGV0ZXhTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSSUE1U3RyaW5nPWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJJQTVTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjE2XCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJJQTVTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSVVRDVGltZT1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSVVRDVGltZS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt0aGlzLmhUPVwiMTdcIjt0aGlzLnNldEJ5RGF0ZT1mdW5jdGlvbihiKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmRhdGU9Yjt0aGlzLnM9dGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZSxcInV0Y1wiKTt0aGlzLmhWPXN0b2hleCh0aGlzLnMpfTt0aGlzLmdldEZyZXNoVmFsdWVIZXg9ZnVuY3Rpb24oKXtpZih0eXBlb2YgdGhpcy5kYXRlPT1cInVuZGVmaW5lZFwiJiZ0eXBlb2YgdGhpcy5zPT1cInVuZGVmaW5lZFwiKXt0aGlzLmRhdGU9bmV3IERhdGUoKTt0aGlzLnM9dGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZSxcInV0Y1wiKTt0aGlzLmhWPXN0b2hleCh0aGlzLnMpfXJldHVybiB0aGlzLmhWfTtpZihhIT09dW5kZWZpbmVkKXtpZihhLnN0ciE9PXVuZGVmaW5lZCl7dGhpcy5zZXRTdHJpbmcoYS5zdHIpfWVsc2V7aWYodHlwZW9mIGE9PVwic3RyaW5nXCImJmEubWF0Y2goL15bMC05XXsxMn1aJC8pKXt0aGlzLnNldFN0cmluZyhhKX1lbHNle2lmKGEuaGV4IT09dW5kZWZpbmVkKXt0aGlzLnNldFN0cmluZ0hleChhLmhleCl9ZWxzZXtpZihhLmRhdGUhPT11bmRlZmluZWQpe3RoaXMuc2V0QnlEYXRlKGEuZGF0ZSl9fX19fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUlVUQ1RpbWUsS0pVUi5hc24xLkRFUkFic3RyYWN0VGltZSk7S0pVUi5hc24xLkRFUkdlbmVyYWxpemVkVGltZT1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSR2VuZXJhbGl6ZWRUaW1lLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpO3RoaXMuaFQ9XCIxOFwiO3RoaXMud2l0aE1pbGxpcz1mYWxzZTt0aGlzLnNldEJ5RGF0ZT1mdW5jdGlvbihiKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmRhdGU9Yjt0aGlzLnM9dGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZSxcImdlblwiLHRoaXMud2l0aE1pbGxpcyk7dGhpcy5oVj1zdG9oZXgodGhpcy5zKX07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7aWYodGhpcy5kYXRlPT09dW5kZWZpbmVkJiZ0aGlzLnM9PT11bmRlZmluZWQpe3RoaXMuZGF0ZT1uZXcgRGF0ZSgpO3RoaXMucz10aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlLFwiZ2VuXCIsdGhpcy53aXRoTWlsbGlzKTt0aGlzLmhWPXN0b2hleCh0aGlzLnMpfXJldHVybiB0aGlzLmhWfTtpZihhIT09dW5kZWZpbmVkKXtpZihhLnN0ciE9PXVuZGVmaW5lZCl7dGhpcy5zZXRTdHJpbmcoYS5zdHIpfWVsc2V7aWYodHlwZW9mIGE9PVwic3RyaW5nXCImJmEubWF0Y2goL15bMC05XXsxNH1aJC8pKXt0aGlzLnNldFN0cmluZyhhKX1lbHNle2lmKGEuaGV4IT09dW5kZWZpbmVkKXt0aGlzLnNldFN0cmluZ0hleChhLmhleCl9ZWxzZXtpZihhLmRhdGUhPT11bmRlZmluZWQpe3RoaXMuc2V0QnlEYXRlKGEuZGF0ZSl9fX19aWYoYS5taWxsaXM9PT10cnVlKXt0aGlzLndpdGhNaWxsaXM9dHJ1ZX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSR2VuZXJhbGl6ZWRUaW1lLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFRpbWUpO0tKVVIuYXNuMS5ERVJTZXF1ZW5jZT1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSU2VxdWVuY2Uuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjMwXCI7dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7dmFyIGM9XCJcIjtmb3IodmFyIGI9MDtiPHRoaXMuYXNuMUFycmF5Lmxlbmd0aDtiKyspe3ZhciBkPXRoaXMuYXNuMUFycmF5W2JdO2MrPWQuZ2V0RW5jb2RlZEhleCgpfXRoaXMuaFY9YztyZXR1cm4gdGhpcy5oVn19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJTZXF1ZW5jZSxLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJ1Y3R1cmVkKTtLSlVSLmFzbjEuREVSU2V0PWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJTZXQuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjMxXCI7dGhpcy5zb3J0RmxhZz10cnVlO3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3ZhciBiPW5ldyBBcnJheSgpO2Zvcih2YXIgYz0wO2M8dGhpcy5hc24xQXJyYXkubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5hc24xQXJyYXlbY107Yi5wdXNoKGQuZ2V0RW5jb2RlZEhleCgpKX1pZih0aGlzLnNvcnRGbGFnPT10cnVlKXtiLnNvcnQoKX10aGlzLmhWPWIuam9pbihcIlwiKTtyZXR1cm4gdGhpcy5oVn07aWYodHlwZW9mIGEhPVwidW5kZWZpbmVkXCIpe2lmKHR5cGVvZiBhLnNvcnRmbGFnIT1cInVuZGVmaW5lZFwiJiZhLnNvcnRmbGFnPT1mYWxzZSl7dGhpcy5zb3J0RmxhZz1mYWxzZX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSU2V0LEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cnVjdHVyZWQpO0tKVVIuYXNuMS5ERVJUYWdnZWRPYmplY3Q9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUlRhZ2dlZE9iamVjdC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dGhpcy5oVD1cImEwXCI7dGhpcy5oVj1cIlwiO3RoaXMuaXNFeHBsaWNpdD10cnVlO3RoaXMuYXNuMU9iamVjdD1udWxsO3RoaXMuc2V0QVNOMU9iamVjdD1mdW5jdGlvbihiLGMsZCl7dGhpcy5oVD1jO3RoaXMuaXNFeHBsaWNpdD1iO3RoaXMuYXNuMU9iamVjdD1kO2lmKHRoaXMuaXNFeHBsaWNpdCl7dGhpcy5oVj10aGlzLmFzbjFPYmplY3QuZ2V0RW5jb2RlZEhleCgpO3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlfWVsc2V7dGhpcy5oVj1udWxsO3RoaXMuaFRMVj1kLmdldEVuY29kZWRIZXgoKTt0aGlzLmhUTFY9dGhpcy5oVExWLnJlcGxhY2UoL14uLi8sYyk7dGhpcy5pc01vZGlmaWVkPWZhbHNlfX07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaFZ9O2lmKHR5cGVvZiBhIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYS50YWchPVwidW5kZWZpbmVkXCIpe3RoaXMuaFQ9YS50YWd9aWYodHlwZW9mIGEuZXhwbGljaXQhPVwidW5kZWZpbmVkXCIpe3RoaXMuaXNFeHBsaWNpdD1hLmV4cGxpY2l0fWlmKHR5cGVvZiBhLm9iaiE9XCJ1bmRlZmluZWRcIil7dGhpcy5hc24xT2JqZWN0PWEub2JqO3RoaXMuc2V0QVNOMU9iamVjdCh0aGlzLmlzRXhwbGljaXQsdGhpcy5oVCx0aGlzLmFzbjFPYmplY3QpfX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJUYWdnZWRPYmplY3QsS0pVUi5hc24xLkFTTjFPYmplY3QpO1xudmFyIEFTTjFIRVg9bmV3IGZ1bmN0aW9uKCl7fTtBU04xSEVYLmdldExibGVuPWZ1bmN0aW9uKGMsYSl7aWYoYy5zdWJzdHIoYSsyLDEpIT1cIjhcIil7cmV0dXJuIDF9dmFyIGI9cGFyc2VJbnQoYy5zdWJzdHIoYSszLDEpKTtpZihiPT0wKXtyZXR1cm4gLTF9aWYoMDxiJiZiPDEwKXtyZXR1cm4gYisxfXJldHVybiAtMn07QVNOMUhFWC5nZXRMPWZ1bmN0aW9uKGMsYil7dmFyIGE9QVNOMUhFWC5nZXRMYmxlbihjLGIpO2lmKGE8MSl7cmV0dXJuXCJcIn1yZXR1cm4gYy5zdWJzdHIoYisyLGEqMil9O0FTTjFIRVguZ2V0VmJsZW49ZnVuY3Rpb24oZCxhKXt2YXIgYyxiO2M9QVNOMUhFWC5nZXRMKGQsYSk7aWYoYz09XCJcIil7cmV0dXJuIC0xfWlmKGMuc3Vic3RyKDAsMSk9PT1cIjhcIil7Yj1uZXcgQmlnSW50ZWdlcihjLnN1YnN0cigyKSwxNil9ZWxzZXtiPW5ldyBCaWdJbnRlZ2VyKGMsMTYpfXJldHVybiBiLmludFZhbHVlKCl9O0FTTjFIRVguZ2V0VmlkeD1mdW5jdGlvbihjLGIpe3ZhciBhPUFTTjFIRVguZ2V0TGJsZW4oYyxiKTtpZihhPDApe3JldHVybiBhfXJldHVybiBiKyhhKzEpKjJ9O0FTTjFIRVguZ2V0Vj1mdW5jdGlvbihkLGEpe3ZhciBjPUFTTjFIRVguZ2V0VmlkeChkLGEpO3ZhciBiPUFTTjFIRVguZ2V0VmJsZW4oZCxhKTtyZXR1cm4gZC5zdWJzdHIoYyxiKjIpfTtBU04xSEVYLmdldFRMVj1mdW5jdGlvbihiLGEpe3JldHVybiBiLnN1YnN0cihhLDIpK0FTTjFIRVguZ2V0TChiLGEpK0FTTjFIRVguZ2V0VihiLGEpfTtBU04xSEVYLmdldE5leHRTaWJsaW5nSWR4PWZ1bmN0aW9uKGQsYSl7dmFyIGM9QVNOMUhFWC5nZXRWaWR4KGQsYSk7dmFyIGI9QVNOMUhFWC5nZXRWYmxlbihkLGEpO3JldHVybiBjK2IqMn07QVNOMUhFWC5nZXRDaGlsZElkeD1mdW5jdGlvbihlLGYpe3ZhciBqPUFTTjFIRVg7dmFyIGc9bmV3IEFycmF5KCk7dmFyIGk9ai5nZXRWaWR4KGUsZik7aWYoZS5zdWJzdHIoZiwyKT09XCIwM1wiKXtnLnB1c2goaSsyKX1lbHNle2cucHVzaChpKX12YXIgbD1qLmdldFZibGVuKGUsZik7dmFyIGM9aTt2YXIgZD0wO3doaWxlKDEpe3ZhciBiPWouZ2V0TmV4dFNpYmxpbmdJZHgoZSxjKTtpZihiPT1udWxsfHwoYi1pPj0obCoyKSkpe2JyZWFrfWlmKGQ+PTIwMCl7YnJlYWt9Zy5wdXNoKGIpO2M9YjtkKyt9cmV0dXJuIGd9O0FTTjFIRVguZ2V0TnRoQ2hpbGRJZHg9ZnVuY3Rpb24oZCxiLGUpe3ZhciBjPUFTTjFIRVguZ2V0Q2hpbGRJZHgoZCxiKTtyZXR1cm4gY1tlXX07QVNOMUhFWC5nZXRJZHhieUxpc3Q9ZnVuY3Rpb24oZSxkLGMsaSl7dmFyIGc9QVNOMUhFWDt2YXIgZixiO2lmKGMubGVuZ3RoPT0wKXtpZihpIT09dW5kZWZpbmVkKXtpZihlLnN1YnN0cihkLDIpIT09aSl7dGhyb3dcImNoZWNraW5nIHRhZyBkb2Vzbid0IG1hdGNoOiBcIitlLnN1YnN0cihkLDIpK1wiIT1cIitpfX1yZXR1cm4gZH1mPWMuc2hpZnQoKTtiPWcuZ2V0Q2hpbGRJZHgoZSxkKTtyZXR1cm4gZy5nZXRJZHhieUxpc3QoZSxiW2ZdLGMsaSl9O0FTTjFIRVguZ2V0VExWYnlMaXN0PWZ1bmN0aW9uKGQsYyxiLGYpe3ZhciBlPUFTTjFIRVg7dmFyIGE9ZS5nZXRJZHhieUxpc3QoZCxjLGIpO2lmKGE9PT11bmRlZmluZWQpe3Rocm93XCJjYW4ndCBmaW5kIG50aExpc3Qgb2JqZWN0XCJ9aWYoZiE9PXVuZGVmaW5lZCl7aWYoZC5zdWJzdHIoYSwyKSE9Zil7dGhyb3dcImNoZWNraW5nIHRhZyBkb2Vzbid0IG1hdGNoOiBcIitkLnN1YnN0cihhLDIpK1wiIT1cIitmfX1yZXR1cm4gZS5nZXRUTFYoZCxhKX07QVNOMUhFWC5nZXRWYnlMaXN0PWZ1bmN0aW9uKGUsYyxiLGcsaSl7dmFyIGY9QVNOMUhFWDt2YXIgYSxkO2E9Zi5nZXRJZHhieUxpc3QoZSxjLGIsZyk7aWYoYT09PXVuZGVmaW5lZCl7dGhyb3dcImNhbid0IGZpbmQgbnRoTGlzdCBvYmplY3RcIn1kPWYuZ2V0VihlLGEpO2lmKGk9PT10cnVlKXtkPWQuc3Vic3RyKDIpfXJldHVybiBkfTtBU04xSEVYLmhleHRvb2lkc3RyPWZ1bmN0aW9uKGUpe3ZhciBoPWZ1bmN0aW9uKGIsYSl7aWYoYi5sZW5ndGg+PWEpe3JldHVybiBifXJldHVybiBuZXcgQXJyYXkoYS1iLmxlbmd0aCsxKS5qb2luKFwiMFwiKStifTt2YXIgbD1bXTt2YXIgbz1lLnN1YnN0cigwLDIpO3ZhciBmPXBhcnNlSW50KG8sMTYpO2xbMF09bmV3IFN0cmluZyhNYXRoLmZsb29yKGYvNDApKTtsWzFdPW5ldyBTdHJpbmcoZiU0MCk7dmFyIG09ZS5zdWJzdHIoMik7dmFyIGs9W107Zm9yKHZhciBnPTA7ZzxtLmxlbmd0aC8yO2crKyl7ay5wdXNoKHBhcnNlSW50KG0uc3Vic3RyKGcqMiwyKSwxNikpfXZhciBqPVtdO3ZhciBkPVwiXCI7Zm9yKHZhciBnPTA7ZzxrLmxlbmd0aDtnKyspe2lmKGtbZ10mMTI4KXtkPWQraCgoa1tnXSYxMjcpLnRvU3RyaW5nKDIpLDcpfWVsc2V7ZD1kK2goKGtbZ10mMTI3KS50b1N0cmluZygyKSw3KTtqLnB1c2gobmV3IFN0cmluZyhwYXJzZUludChkLDIpKSk7ZD1cIlwifX12YXIgbj1sLmpvaW4oXCIuXCIpO2lmKGoubGVuZ3RoPjApe249bitcIi5cIitqLmpvaW4oXCIuXCIpfXJldHVybiBufTtBU04xSEVYLmR1bXA9ZnVuY3Rpb24odCxjLGwsZyl7dmFyIHA9QVNOMUhFWDt2YXIgaj1wLmdldFY7dmFyIHk9cC5kdW1wO3ZhciB3PXAuZ2V0Q2hpbGRJZHg7dmFyIGU9dDtpZih0IGluc3RhbmNlb2YgS0pVUi5hc24xLkFTTjFPYmplY3Qpe2U9dC5nZXRFbmNvZGVkSGV4KCl9dmFyIHE9ZnVuY3Rpb24oQSxpKXtpZihBLmxlbmd0aDw9aSoyKXtyZXR1cm4gQX1lbHNle3ZhciB2PUEuc3Vic3RyKDAsaSkrXCIuLih0b3RhbCBcIitBLmxlbmd0aC8yK1wiYnl0ZXMpLi5cIitBLnN1YnN0cihBLmxlbmd0aC1pLGkpO3JldHVybiB2fX07aWYoYz09PXVuZGVmaW5lZCl7Yz17b21taXRfbG9uZ19vY3RldDozMn19aWYobD09PXVuZGVmaW5lZCl7bD0wfWlmKGc9PT11bmRlZmluZWQpe2c9XCJcIn12YXIgeD1jLm9tbWl0X2xvbmdfb2N0ZXQ7aWYoZS5zdWJzdHIobCwyKT09XCIwMVwiKXt2YXIgaD1qKGUsbCk7aWYoaD09XCIwMFwiKXtyZXR1cm4gZytcIkJPT0xFQU4gRkFMU0VcXG5cIn1lbHNle3JldHVybiBnK1wiQk9PTEVBTiBUUlVFXFxuXCJ9fWlmKGUuc3Vic3RyKGwsMik9PVwiMDJcIil7dmFyIGg9aihlLGwpO3JldHVybiBnK1wiSU5URUdFUiBcIitxKGgseCkrXCJcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjAzXCIpe3ZhciBoPWooZSxsKTtyZXR1cm4gZytcIkJJVFNUUklORyBcIitxKGgseCkrXCJcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjA0XCIpe3ZhciBoPWooZSxsKTtpZihwLmlzQVNOMUhFWChoKSl7dmFyIGs9ZytcIk9DVEVUU1RSSU5HLCBlbmNhcHN1bGF0ZXNcXG5cIjtrPWsreShoLGMsMCxnK1wiICBcIik7cmV0dXJuIGt9ZWxzZXtyZXR1cm4gZytcIk9DVEVUU1RSSU5HIFwiK3EoaCx4KStcIlxcblwifX1pZihlLnN1YnN0cihsLDIpPT1cIjA1XCIpe3JldHVybiBnK1wiTlVMTFxcblwifWlmKGUuc3Vic3RyKGwsMik9PVwiMDZcIil7dmFyIG09aihlLGwpO3ZhciBhPUtKVVIuYXNuMS5BU04xVXRpbC5vaWRIZXhUb0ludChtKTt2YXIgbz1LSlVSLmFzbjEueDUwOS5PSUQub2lkMm5hbWUoYSk7dmFyIGI9YS5yZXBsYWNlKC9cXC4vZyxcIiBcIik7aWYobyE9XCJcIil7cmV0dXJuIGcrXCJPYmplY3RJZGVudGlmaWVyIFwiK28rXCIgKFwiK2IrXCIpXFxuXCJ9ZWxzZXtyZXR1cm4gZytcIk9iamVjdElkZW50aWZpZXIgKFwiK2IrXCIpXFxuXCJ9fWlmKGUuc3Vic3RyKGwsMik9PVwiMGNcIil7cmV0dXJuIGcrXCJVVEY4U3RyaW5nICdcIitoZXh0b3V0ZjgoaihlLGwpKStcIidcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjEzXCIpe3JldHVybiBnK1wiUHJpbnRhYmxlU3RyaW5nICdcIitoZXh0b3V0ZjgoaihlLGwpKStcIidcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjE0XCIpe3JldHVybiBnK1wiVGVsZXRleFN0cmluZyAnXCIraGV4dG91dGY4KGooZSxsKSkrXCInXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIxNlwiKXtyZXR1cm4gZytcIklBNVN0cmluZyAnXCIraGV4dG91dGY4KGooZSxsKSkrXCInXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIxN1wiKXtyZXR1cm4gZytcIlVUQ1RpbWUgXCIraGV4dG91dGY4KGooZSxsKSkrXCJcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjE4XCIpe3JldHVybiBnK1wiR2VuZXJhbGl6ZWRUaW1lIFwiK2hleHRvdXRmOChqKGUsbCkpK1wiXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIzMFwiKXtpZihlLnN1YnN0cihsLDQpPT1cIjMwMDBcIil7cmV0dXJuIGcrXCJTRVFVRU5DRSB7fVxcblwifXZhciBrPWcrXCJTRVFVRU5DRVxcblwiO3ZhciBkPXcoZSxsKTt2YXIgZj1jO2lmKChkLmxlbmd0aD09Mnx8ZC5sZW5ndGg9PTMpJiZlLnN1YnN0cihkWzBdLDIpPT1cIjA2XCImJmUuc3Vic3RyKGRbZC5sZW5ndGgtMV0sMik9PVwiMDRcIil7dmFyIG89cC5vaWRuYW1lKGooZSxkWzBdKSk7dmFyIHI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjKSk7ci54NTA5RXh0TmFtZT1vO2Y9cn1mb3IodmFyIHU9MDt1PGQubGVuZ3RoO3UrKyl7az1rK3koZSxmLGRbdV0sZytcIiAgXCIpfXJldHVybiBrfWlmKGUuc3Vic3RyKGwsMik9PVwiMzFcIil7dmFyIGs9ZytcIlNFVFxcblwiO3ZhciBkPXcoZSxsKTtmb3IodmFyIHU9MDt1PGQubGVuZ3RoO3UrKyl7az1rK3koZSxjLGRbdV0sZytcIiAgXCIpfXJldHVybiBrfXZhciB6PXBhcnNlSW50KGUuc3Vic3RyKGwsMiksMTYpO2lmKCh6JjEyOCkhPTApe3ZhciBuPXomMzE7aWYoKHomMzIpIT0wKXt2YXIgaz1nK1wiW1wiK24rXCJdXFxuXCI7dmFyIGQ9dyhlLGwpO2Zvcih2YXIgdT0wO3U8ZC5sZW5ndGg7dSsrKXtrPWsreShlLGMsZFt1XSxnK1wiICBcIil9cmV0dXJuIGt9ZWxzZXt2YXIgaD1qKGUsbCk7aWYoaC5zdWJzdHIoMCw4KT09XCI2ODc0NzQ3MFwiKXtoPWhleHRvdXRmOChoKX1pZihjLng1MDlFeHROYW1lPT09XCJzdWJqZWN0QWx0TmFtZVwiJiZuPT0yKXtoPWhleHRvdXRmOChoKX12YXIgaz1nK1wiW1wiK24rXCJdIFwiK2grXCJcXG5cIjtyZXR1cm4ga319cmV0dXJuIGcrXCJVTktOT1dOKFwiK2Uuc3Vic3RyKGwsMikrXCIpIFwiK2ooZSxsKStcIlxcblwifTtBU04xSEVYLmlzQVNOMUhFWD1mdW5jdGlvbihlKXt2YXIgZD1BU04xSEVYO2lmKGUubGVuZ3RoJTI9PTEpe3JldHVybiBmYWxzZX12YXIgYz1kLmdldFZibGVuKGUsMCk7dmFyIGI9ZS5zdWJzdHIoMCwyKTt2YXIgZj1kLmdldEwoZSwwKTt2YXIgYT1lLmxlbmd0aC1iLmxlbmd0aC1mLmxlbmd0aDtpZihhPT1jKjIpe3JldHVybiB0cnVlfXJldHVybiBmYWxzZX07QVNOMUhFWC5vaWRuYW1lPWZ1bmN0aW9uKGEpe3ZhciBjPUtKVVIuYXNuMTtpZihLSlVSLmxhbmcuU3RyaW5nLmlzSGV4KGEpKXthPWMuQVNOMVV0aWwub2lkSGV4VG9JbnQoYSl9dmFyIGI9Yy54NTA5Lk9JRC5vaWQybmFtZShhKTtpZihiPT09XCJcIil7Yj1hfXJldHVybiBifTtcbnZhciBLSlVSO2lmKHR5cGVvZiBLSlVSPT1cInVuZGVmaW5lZFwifHwhS0pVUil7S0pVUj17fX1pZih0eXBlb2YgS0pVUi5sYW5nPT1cInVuZGVmaW5lZFwifHwhS0pVUi5sYW5nKXtLSlVSLmxhbmc9e319S0pVUi5sYW5nLlN0cmluZz1mdW5jdGlvbigpe307ZnVuY3Rpb24gQmFzZTY0eCgpe31mdW5jdGlvbiBzdG9CQShkKXt2YXIgYj1uZXcgQXJyYXkoKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7YltjXT1kLmNoYXJDb2RlQXQoYyl9cmV0dXJuIGJ9ZnVuY3Rpb24gQkF0b3MoYil7dmFyIGQ9XCJcIjtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7ZD1kK1N0cmluZy5mcm9tQ2hhckNvZGUoYltjXSl9cmV0dXJuIGR9ZnVuY3Rpb24gQkF0b2hleChiKXt2YXIgZT1cIlwiO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgYz1iW2RdLnRvU3RyaW5nKDE2KTtpZihjLmxlbmd0aD09MSl7Yz1cIjBcIitjfWU9ZStjfXJldHVybiBlfWZ1bmN0aW9uIHN0b2hleChhKXtyZXR1cm4gQkF0b2hleChzdG9CQShhKSl9ZnVuY3Rpb24gc3RvYjY0KGEpe3JldHVybiBoZXgyYjY0KHN0b2hleChhKSl9ZnVuY3Rpb24gc3RvYjY0dShhKXtyZXR1cm4gYjY0dG9iNjR1KGhleDJiNjQoc3RvaGV4KGEpKSl9ZnVuY3Rpb24gYjY0dXRvcyhhKXtyZXR1cm4gQkF0b3MoYjY0dG9CQShiNjR1dG9iNjQoYSkpKX1mdW5jdGlvbiBiNjR0b2I2NHUoYSl7YT1hLnJlcGxhY2UoL1xcPS9nLFwiXCIpO2E9YS5yZXBsYWNlKC9cXCsvZyxcIi1cIik7YT1hLnJlcGxhY2UoL1xcLy9nLFwiX1wiKTtyZXR1cm4gYX1mdW5jdGlvbiBiNjR1dG9iNjQoYSl7aWYoYS5sZW5ndGglND09Mil7YT1hK1wiPT1cIn1lbHNle2lmKGEubGVuZ3RoJTQ9PTMpe2E9YStcIj1cIn19YT1hLnJlcGxhY2UoLy0vZyxcIitcIik7YT1hLnJlcGxhY2UoL18vZyxcIi9cIik7cmV0dXJuIGF9ZnVuY3Rpb24gaGV4dG9iNjR1KGEpe2lmKGEubGVuZ3RoJTI9PTEpe2E9XCIwXCIrYX1yZXR1cm4gYjY0dG9iNjR1KGhleDJiNjQoYSkpfWZ1bmN0aW9uIGI2NHV0b2hleChhKXtyZXR1cm4gYjY0dG9oZXgoYjY0dXRvYjY0KGEpKX12YXIgdXRmOHRvYjY0dSxiNjR1dG91dGY4O2lmKHR5cGVvZiBCdWZmZXI9PT1cImZ1bmN0aW9uXCIpe3V0Zjh0b2I2NHU9ZnVuY3Rpb24oYSl7cmV0dXJuIGI2NHRvYjY0dShuZXcgQnVmZmVyKGEsXCJ1dGY4XCIpLnRvU3RyaW5nKFwiYmFzZTY0XCIpKX07YjY0dXRvdXRmOD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJ1ZmZlcihiNjR1dG9iNjQoYSksXCJiYXNlNjRcIikudG9TdHJpbmcoXCJ1dGY4XCIpfX1lbHNle3V0Zjh0b2I2NHU9ZnVuY3Rpb24oYSl7cmV0dXJuIGhleHRvYjY0dSh1cmljbXB0b2hleChlbmNvZGVVUklDb21wb25lbnRBbGwoYSkpKX07YjY0dXRvdXRmOD1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGhleHRvdXJpY21wKGI2NHV0b2hleChhKSkpfX1mdW5jdGlvbiB1dGY4dG9iNjQoYSl7cmV0dXJuIGhleDJiNjQodXJpY21wdG9oZXgoZW5jb2RlVVJJQ29tcG9uZW50QWxsKGEpKSl9ZnVuY3Rpb24gYjY0dG91dGY4KGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoaGV4dG91cmljbXAoYjY0dG9oZXgoYSkpKX1mdW5jdGlvbiB1dGY4dG9oZXgoYSl7cmV0dXJuIHVyaWNtcHRvaGV4KGVuY29kZVVSSUNvbXBvbmVudEFsbChhKSl9ZnVuY3Rpb24gaGV4dG91dGY4KGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoaGV4dG91cmljbXAoYSkpfWZ1bmN0aW9uIGhleHRvcnN0cihjKXt2YXIgYj1cIlwiO2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGgtMTthKz0yKXtiKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMuc3Vic3RyKGEsMiksMTYpKX1yZXR1cm4gYn1mdW5jdGlvbiByc3RydG9oZXgoYyl7dmFyIGE9XCJcIjtmb3IodmFyIGI9MDtiPGMubGVuZ3RoO2IrKyl7YSs9KFwiMFwiK2MuY2hhckNvZGVBdChiKS50b1N0cmluZygxNikpLnNsaWNlKC0yKX1yZXR1cm4gYX1mdW5jdGlvbiBoZXh0b2I2NChhKXtyZXR1cm4gaGV4MmI2NChhKX1mdW5jdGlvbiBoZXh0b2I2NG5sKGIpe3ZhciBhPWhleHRvYjY0KGIpO3ZhciBjPWEucmVwbGFjZSgvKC57NjR9KS9nLFwiJDFcXHJcXG5cIik7Yz1jLnJlcGxhY2UoL1xcclxcbiQvLFwiXCIpO3JldHVybiBjfWZ1bmN0aW9uIGI2NG5sdG9oZXgoYil7dmFyIGE9Yi5yZXBsYWNlKC9bXjAtOUEtWmEtelxcLys9XSovZyxcIlwiKTt2YXIgYz1iNjR0b2hleChhKTtyZXR1cm4gY31mdW5jdGlvbiBoZXh0b3BlbShhLGIpe3ZhciBjPWhleHRvYjY0bmwoYSk7cmV0dXJuXCItLS0tLUJFR0lOIFwiK2IrXCItLS0tLVxcclxcblwiK2MrXCJcXHJcXG4tLS0tLUVORCBcIitiK1wiLS0tLS1cXHJcXG5cIn1mdW5jdGlvbiBwZW10b2hleChhLGIpe2lmKGEuaW5kZXhPZihcIi0tLS0tQkVHSU4gXCIpPT0tMSl7dGhyb3dcImNhbid0IGZpbmQgUEVNIGhlYWRlcjogXCIrYn1pZihiIT09dW5kZWZpbmVkKXthPWEucmVwbGFjZShcIi0tLS0tQkVHSU4gXCIrYitcIi0tLS0tXCIsXCJcIik7YT1hLnJlcGxhY2UoXCItLS0tLUVORCBcIitiK1wiLS0tLS1cIixcIlwiKX1lbHNle2E9YS5yZXBsYWNlKC8tLS0tLUJFR0lOIFteLV0rLS0tLS0vLFwiXCIpO2E9YS5yZXBsYWNlKC8tLS0tLUVORCBbXi1dKy0tLS0tLyxcIlwiKX1yZXR1cm4gYjY0bmx0b2hleChhKX1mdW5jdGlvbiBoZXh0b0FycmF5QnVmZmVyKGQpe2lmKGQubGVuZ3RoJTIhPTApe3Rocm93XCJpbnB1dCBpcyBub3QgZXZlbiBsZW5ndGhcIn1pZihkLm1hdGNoKC9eWzAtOUEtRmEtZl0rJC8pPT1udWxsKXt0aHJvd1wiaW5wdXQgaXMgbm90IGhleGFkZWNpbWFsXCJ9dmFyIGI9bmV3IEFycmF5QnVmZmVyKGQubGVuZ3RoLzIpO3ZhciBhPW5ldyBEYXRhVmlldyhiKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoLzI7YysrKXthLnNldFVpbnQ4KGMscGFyc2VJbnQoZC5zdWJzdHIoYyoyLDIpLDE2KSl9cmV0dXJuIGJ9ZnVuY3Rpb24gQXJyYXlCdWZmZXJ0b2hleChiKXt2YXIgZD1cIlwiO3ZhciBhPW5ldyBEYXRhVmlldyhiKTtmb3IodmFyIGM9MDtjPGIuYnl0ZUxlbmd0aDtjKyspe2QrPShcIjAwXCIrYS5nZXRVaW50OChjKS50b1N0cmluZygxNikpLnNsaWNlKC0yKX1yZXR1cm4gZH1mdW5jdGlvbiB6dWx1dG9tc2VjKG4pe3ZhciBsLGosbSxlLGYsaSxiLGs7dmFyIGEsaCxnLGM7Yz1uLm1hdGNoKC9eKFxcZHsyfXxcXGR7NH0pKFxcZFxcZCkoXFxkXFxkKShcXGRcXGQpKFxcZFxcZCkoXFxkXFxkKSh8XFwuXFxkKylaJC8pO2lmKGMpe2E9Y1sxXTtsPXBhcnNlSW50KGEpO2lmKGEubGVuZ3RoPT09Mil7aWYoNTA8PWwmJmw8MTAwKXtsPTE5MDArbH1lbHNle2lmKDA8PWwmJmw8NTApe2w9MjAwMCtsfX19aj1wYXJzZUludChjWzJdKS0xO209cGFyc2VJbnQoY1szXSk7ZT1wYXJzZUludChjWzRdKTtmPXBhcnNlSW50KGNbNV0pO2k9cGFyc2VJbnQoY1s2XSk7Yj0wO2g9Y1s3XTtpZihoIT09XCJcIil7Zz0oaC5zdWJzdHIoMSkrXCIwMFwiKS5zdWJzdHIoMCwzKTtiPXBhcnNlSW50KGcpfXJldHVybiBEYXRlLlVUQyhsLGosbSxlLGYsaSxiKX10aHJvd1widW5zdXBwb3J0ZWQgenVsdSBmb3JtYXQ6IFwiK259ZnVuY3Rpb24genVsdXRvc2VjKGEpe3ZhciBiPXp1bHV0b21zZWMoYSk7cmV0dXJuIH5+KGIvMTAwMCl9ZnVuY3Rpb24genVsdXRvZGF0ZShhKXtyZXR1cm4gbmV3IERhdGUoenVsdXRvbXNlYyhhKSl9ZnVuY3Rpb24gZGF0ZXRvenVsdShnLGUsZil7dmFyIGI7dmFyIGE9Zy5nZXRVVENGdWxsWWVhcigpO2lmKGUpe2lmKGE8MTk1MHx8MjA0OTxhKXt0aHJvd1wibm90IHByb3BlciB5ZWFyIGZvciBVVENUaW1lOiBcIithfWI9KFwiXCIrYSkuc2xpY2UoLTIpfWVsc2V7Yj0oXCIwMDBcIithKS5zbGljZSgtNCl9Yis9KFwiMFwiKyhnLmdldFVUQ01vbnRoKCkrMSkpLnNsaWNlKC0yKTtiKz0oXCIwXCIrZy5nZXRVVENEYXRlKCkpLnNsaWNlKC0yKTtiKz0oXCIwXCIrZy5nZXRVVENIb3VycygpKS5zbGljZSgtMik7Yis9KFwiMFwiK2cuZ2V0VVRDTWludXRlcygpKS5zbGljZSgtMik7Yis9KFwiMFwiK2cuZ2V0VVRDU2Vjb25kcygpKS5zbGljZSgtMik7aWYoZil7dmFyIGM9Zy5nZXRVVENNaWxsaXNlY29uZHMoKTtpZihjIT09MCl7Yz0oXCIwMFwiK2MpLnNsaWNlKC0zKTtjPWMucmVwbGFjZSgvMCskL2csXCJcIik7Yis9XCIuXCIrY319Yis9XCJaXCI7cmV0dXJuIGJ9ZnVuY3Rpb24gdXJpY21wdG9oZXgoYSl7cmV0dXJuIGEucmVwbGFjZSgvJS9nLFwiXCIpfWZ1bmN0aW9uIGhleHRvdXJpY21wKGEpe3JldHVybiBhLnJlcGxhY2UoLyguLikvZyxcIiUkMVwiKX1mdW5jdGlvbiBpcHY2dG9oZXgoZyl7dmFyIGI9XCJtYWxmb3JtZWQgSVB2NiBhZGRyZXNzXCI7aWYoIWcubWF0Y2goL15bMC05QS1GYS1mOl0rJC8pKXt0aHJvdyBifWc9Zy50b0xvd2VyQ2FzZSgpO3ZhciBkPWcuc3BsaXQoXCI6XCIpLmxlbmd0aC0xO2lmKGQ8Mil7dGhyb3cgYn12YXIgZT1cIjpcIi5yZXBlYXQoNy1kKzIpO2c9Zy5yZXBsYWNlKFwiOjpcIixlKTt2YXIgYz1nLnNwbGl0KFwiOlwiKTtpZihjLmxlbmd0aCE9OCl7dGhyb3cgYn1mb3IodmFyIGY9MDtmPDg7ZisrKXtjW2ZdPShcIjAwMDBcIitjW2ZdKS5zbGljZSgtNCl9cmV0dXJuIGMuam9pbihcIlwiKX1mdW5jdGlvbiBoZXh0b2lwdjYoZSl7aWYoIWUubWF0Y2goL15bMC05QS1GYS1mXXszMn0kLykpe3Rocm93XCJtYWxmb3JtZWQgSVB2NiBhZGRyZXNzIG9jdGV0XCJ9ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIGI9ZS5tYXRjaCgvLnsxLDR9L2cpO2Zvcih2YXIgZD0wO2Q8ODtkKyspe2JbZF09YltkXS5yZXBsYWNlKC9eMCsvLFwiXCIpO2lmKGJbZF09PVwiXCIpe2JbZF09XCIwXCJ9fWU9XCI6XCIrYi5qb2luKFwiOlwiKStcIjpcIjt2YXIgYz1lLm1hdGNoKC86KDA6KXsyLH0vZyk7aWYoYz09PW51bGwpe3JldHVybiBlLnNsaWNlKDEsLTEpfXZhciBmPVwiXCI7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe2lmKGNbZF0ubGVuZ3RoPmYubGVuZ3RoKXtmPWNbZF19fWU9ZS5yZXBsYWNlKGYsXCI6OlwiKTtyZXR1cm4gZS5zbGljZSgxLC0xKX1mdW5jdGlvbiBoZXh0b2lwKGIpe3ZhciBkPVwibWFsZm9ybWVkIGhleCB2YWx1ZVwiO2lmKCFiLm1hdGNoKC9eKFswLTlBLUZhLWZdWzAtOUEtRmEtZl0pezEsfSQvKSl7dGhyb3cgZH1pZihiLmxlbmd0aD09OCl7dmFyIGM7dHJ5e2M9cGFyc2VJbnQoYi5zdWJzdHIoMCwyKSwxNikrXCIuXCIrcGFyc2VJbnQoYi5zdWJzdHIoMiwyKSwxNikrXCIuXCIrcGFyc2VJbnQoYi5zdWJzdHIoNCwyKSwxNikrXCIuXCIrcGFyc2VJbnQoYi5zdWJzdHIoNiwyKSwxNik7cmV0dXJuIGN9Y2F0Y2goYSl7dGhyb3cgZH19ZWxzZXtpZihiLmxlbmd0aD09MzIpe3JldHVybiBoZXh0b2lwdjYoYil9ZWxzZXtyZXR1cm4gYn19fWZ1bmN0aW9uIGlwdG9oZXgoZil7dmFyIGo9XCJtYWxmb3JtZWQgSVAgYWRkcmVzc1wiO2Y9Zi50b0xvd2VyQ2FzZShmKTtpZihmLm1hdGNoKC9eWzAtOS5dKyQvKSl7dmFyIGI9Zi5zcGxpdChcIi5cIik7aWYoYi5sZW5ndGghPT00KXt0aHJvdyBqfXZhciBnPVwiXCI7dHJ5e2Zvcih2YXIgZT0wO2U8NDtlKyspe3ZhciBoPXBhcnNlSW50KGJbZV0pO2crPShcIjBcIitoLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpfXJldHVybiBnfWNhdGNoKGMpe3Rocm93IGp9fWVsc2V7aWYoZi5tYXRjaCgvXlswLTlhLWY6XSskLykmJmYuaW5kZXhPZihcIjpcIikhPT0tMSl7cmV0dXJuIGlwdjZ0b2hleChmKX1lbHNle3Rocm93IGp9fX1mdW5jdGlvbiBlbmNvZGVVUklDb21wb25lbnRBbGwoYSl7dmFyIGQ9ZW5jb2RlVVJJQ29tcG9uZW50KGEpO3ZhciBiPVwiXCI7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspe2lmKGRbY109PVwiJVwiKXtiPWIrZC5zdWJzdHIoYywzKTtjPWMrMn1lbHNle2I9YitcIiVcIitzdG9oZXgoZFtjXSl9fXJldHVybiBifWZ1bmN0aW9uIG5ld2xpbmVfdG9Vbml4KGEpe2E9YS5yZXBsYWNlKC9cXHJcXG4vbWcsXCJcXG5cIik7cmV0dXJuIGF9ZnVuY3Rpb24gbmV3bGluZV90b0RvcyhhKXthPWEucmVwbGFjZSgvXFxyXFxuL21nLFwiXFxuXCIpO2E9YS5yZXBsYWNlKC9cXG4vbWcsXCJcXHJcXG5cIik7cmV0dXJuIGF9S0pVUi5sYW5nLlN0cmluZy5pc0ludGVnZXI9ZnVuY3Rpb24oYSl7aWYoYS5tYXRjaCgvXlswLTldKyQvKSl7cmV0dXJuIHRydWV9ZWxzZXtpZihhLm1hdGNoKC9eLVswLTldKyQvKSl7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fX07S0pVUi5sYW5nLlN0cmluZy5pc0hleD1mdW5jdGlvbihhKXtpZihhLmxlbmd0aCUyPT0wJiYoYS5tYXRjaCgvXlswLTlhLWZdKyQvKXx8YS5tYXRjaCgvXlswLTlBLUZdKyQvKSkpe3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX07S0pVUi5sYW5nLlN0cmluZy5pc0Jhc2U2ND1mdW5jdGlvbihhKXthPWEucmVwbGFjZSgvXFxzKy9nLFwiXCIpO2lmKGEubWF0Y2goL15bMC05QS1aYS16K1xcL10rPXswLDN9JC8pJiZhLmxlbmd0aCU0PT0wKXtyZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19O0tKVVIubGFuZy5TdHJpbmcuaXNCYXNlNjRVUkw9ZnVuY3Rpb24oYSl7aWYoYS5tYXRjaCgvWysvPV0vKSl7cmV0dXJuIGZhbHNlfWE9YjY0dXRvYjY0KGEpO3JldHVybiBLSlVSLmxhbmcuU3RyaW5nLmlzQmFzZTY0KGEpfTtLSlVSLmxhbmcuU3RyaW5nLmlzSW50ZWdlckFycmF5PWZ1bmN0aW9uKGEpe2E9YS5yZXBsYWNlKC9cXHMrL2csXCJcIik7aWYoYS5tYXRjaCgvXlxcW1swLTksXStcXF0kLykpe3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX07ZnVuY3Rpb24gaGV4dG9wb3NoZXgoYSl7aWYoYS5sZW5ndGglMj09MSl7cmV0dXJuXCIwXCIrYX1pZihhLnN1YnN0cigwLDEpPlwiN1wiKXtyZXR1cm5cIjAwXCIrYX1yZXR1cm4gYX1mdW5jdGlvbiBpbnRhcnlzdHJ0b2hleChiKXtiPWIucmVwbGFjZSgvXlxccypcXFtcXHMqLyxcIlwiKTtiPWIucmVwbGFjZSgvXFxzKlxcXVxccyokLyxcIlwiKTtiPWIucmVwbGFjZSgvXFxzKi9nLFwiXCIpO3RyeXt2YXIgYz1iLnNwbGl0KC8sLykubWFwKGZ1bmN0aW9uKGcsZSxoKXt2YXIgZj1wYXJzZUludChnKTtpZihmPDB8fDI1NTxmKXt0aHJvd1wiaW50ZWdlciBub3QgaW4gcmFuZ2UgMC0yNTVcIn12YXIgZD0oXCIwMFwiK2YudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7cmV0dXJuIGR9KS5qb2luKFwiXCIpO3JldHVybiBjfWNhdGNoKGEpe3Rocm93XCJtYWxmb3JtZWQgaW50ZWdlciBhcnJheSBzdHJpbmc6IFwiK2F9fXZhciBzdHJkaWZmaWR4PWZ1bmN0aW9uKGMsYSl7dmFyIGQ9Yy5sZW5ndGg7aWYoYy5sZW5ndGg+YS5sZW5ndGgpe2Q9YS5sZW5ndGh9Zm9yKHZhciBiPTA7YjxkO2IrKyl7aWYoYy5jaGFyQ29kZUF0KGIpIT1hLmNoYXJDb2RlQXQoYikpe3JldHVybiBifX1pZihjLmxlbmd0aCE9YS5sZW5ndGgpe3JldHVybiBkfXJldHVybiAtMX07XG5pZih0eXBlb2YgS0pVUj09XCJ1bmRlZmluZWRcInx8IUtKVVIpe0tKVVI9e319aWYodHlwZW9mIEtKVVIuY3J5cHRvPT1cInVuZGVmaW5lZFwifHwhS0pVUi5jcnlwdG8pe0tKVVIuY3J5cHRvPXt9fUtKVVIuY3J5cHRvLlV0aWw9bmV3IGZ1bmN0aW9uKCl7dGhpcy5ESUdFU1RJTkZPSEVBRD17c2hhMTpcIjMwMjEzMDA5MDYwNTJiMGUwMzAyMWEwNTAwMDQxNFwiLHNoYTIyNDpcIjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjXCIsc2hhMjU2OlwiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjBcIixzaGEzODQ6XCIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMFwiLHNoYTUxMjpcIjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwXCIsbWQyOlwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwMjA1MDAwNDEwXCIsbWQ1OlwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwXCIscmlwZW1kMTYwOlwiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0XCIsfTt0aGlzLkRFRkFVTFRQUk9WSURFUj17bWQ1OlwiY3J5cHRvanNcIixzaGExOlwiY3J5cHRvanNcIixzaGEyMjQ6XCJjcnlwdG9qc1wiLHNoYTI1NjpcImNyeXB0b2pzXCIsc2hhMzg0OlwiY3J5cHRvanNcIixzaGE1MTI6XCJjcnlwdG9qc1wiLHJpcGVtZDE2MDpcImNyeXB0b2pzXCIsaG1hY21kNTpcImNyeXB0b2pzXCIsaG1hY3NoYTE6XCJjcnlwdG9qc1wiLGhtYWNzaGEyMjQ6XCJjcnlwdG9qc1wiLGhtYWNzaGEyNTY6XCJjcnlwdG9qc1wiLGhtYWNzaGEzODQ6XCJjcnlwdG9qc1wiLGhtYWNzaGE1MTI6XCJjcnlwdG9qc1wiLGhtYWNyaXBlbWQxNjA6XCJjcnlwdG9qc1wiLE1ENXdpdGhSU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTF3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixTSEEyMjR3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixTSEEyNTZ3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixTSEEzODR3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixTSEE1MTJ3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixSSVBFTUQxNjB3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixNRDV3aXRoRUNEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTF3aXRoRUNEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTIyNHdpdGhFQ0RTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjU2d2l0aEVDRFNBOlwiY3J5cHRvanMvanNyc2FcIixTSEEzODR3aXRoRUNEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTUxMndpdGhFQ0RTQTpcImNyeXB0b2pzL2pzcnNhXCIsUklQRU1EMTYwd2l0aEVDRFNBOlwiY3J5cHRvanMvanNyc2FcIixTSEExd2l0aERTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjI0d2l0aERTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjU2d2l0aERTQTpcImNyeXB0b2pzL2pzcnNhXCIsTUQ1d2l0aFJTQWFuZE1HRjE6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTF3aXRoUlNBYW5kTUdGMTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjI0d2l0aFJTQWFuZE1HRjE6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTI1NndpdGhSU0FhbmRNR0YxOlwiY3J5cHRvanMvanNyc2FcIixTSEEzODR3aXRoUlNBYW5kTUdGMTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBNTEyd2l0aFJTQWFuZE1HRjE6XCJjcnlwdG9qcy9qc3JzYVwiLFJJUEVNRDE2MHdpdGhSU0FhbmRNR0YxOlwiY3J5cHRvanMvanNyc2FcIix9O3RoaXMuQ1JZUFRPSlNNRVNTQUdFRElHRVNUTkFNRT17bWQ1OkNyeXB0b0pTLmFsZ28uTUQ1LHNoYTE6Q3J5cHRvSlMuYWxnby5TSEExLHNoYTIyNDpDcnlwdG9KUy5hbGdvLlNIQTIyNCxzaGEyNTY6Q3J5cHRvSlMuYWxnby5TSEEyNTYsc2hhMzg0OkNyeXB0b0pTLmFsZ28uU0hBMzg0LHNoYTUxMjpDcnlwdG9KUy5hbGdvLlNIQTUxMixyaXBlbWQxNjA6Q3J5cHRvSlMuYWxnby5SSVBFTUQxNjB9O3RoaXMuZ2V0RGlnZXN0SW5mb0hleD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiB0aGlzLkRJR0VTVElORk9IRUFEW2JdPT1cInVuZGVmaW5lZFwiKXt0aHJvd1wiYWxnIG5vdCBzdXBwb3J0ZWQgaW4gVXRpbC5ESUdFU1RJTkZPSEVBRDogXCIrYn1yZXR1cm4gdGhpcy5ESUdFU1RJTkZPSEVBRFtiXSthfTt0aGlzLmdldFBhZGRlZERpZ2VzdEluZm9IZXg9ZnVuY3Rpb24oaCxhLGope3ZhciBjPXRoaXMuZ2V0RGlnZXN0SW5mb0hleChoLGEpO3ZhciBkPWovNDtpZihjLmxlbmd0aCsyMj5kKXt0aHJvd1wia2V5IGlzIHRvbyBzaG9ydCBmb3IgU2lnQWxnOiBrZXlsZW49XCIraitcIixcIithfXZhciBiPVwiMDAwMVwiO3ZhciBrPVwiMDBcIitjO3ZhciBnPVwiXCI7dmFyIGw9ZC1iLmxlbmd0aC1rLmxlbmd0aDtmb3IodmFyIGY9MDtmPGw7Zis9Mil7Zys9XCJmZlwifXZhciBlPWIrZytrO3JldHVybiBlfTt0aGlzLmhhc2hTdHJpbmc9ZnVuY3Rpb24oYSxjKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOmN9KTtyZXR1cm4gYi5kaWdlc3RTdHJpbmcoYSl9O3RoaXMuaGFzaEhleD1mdW5jdGlvbihiLGMpe3ZhciBhPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6Y30pO3JldHVybiBhLmRpZ2VzdEhleChiKX07dGhpcy5zaGExPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJzaGExXCIscHJvdjpcImNyeXB0b2pzXCJ9KTtyZXR1cm4gYi5kaWdlc3RTdHJpbmcoYSl9O3RoaXMuc2hhMjU2PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJzaGEyNTZcIixwcm92OlwiY3J5cHRvanNcIn0pO3JldHVybiBiLmRpZ2VzdFN0cmluZyhhKX07dGhpcy5zaGEyNTZIZXg9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Qoe2FsZzpcInNoYTI1NlwiLHByb3Y6XCJjcnlwdG9qc1wifSk7cmV0dXJuIGIuZGlnZXN0SGV4KGEpfTt0aGlzLnNoYTUxMj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOlwic2hhNTEyXCIscHJvdjpcImNyeXB0b2pzXCJ9KTtyZXR1cm4gYi5kaWdlc3RTdHJpbmcoYSl9O3RoaXMuc2hhNTEySGV4PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJzaGE1MTJcIixwcm92OlwiY3J5cHRvanNcIn0pO3JldHVybiBiLmRpZ2VzdEhleChhKX19O0tKVVIuY3J5cHRvLlV0aWwubWQ1PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJtZDVcIixwcm92OlwiY3J5cHRvanNcIn0pO3JldHVybiBiLmRpZ2VzdFN0cmluZyhhKX07S0pVUi5jcnlwdG8uVXRpbC5yaXBlbWQxNjA9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Qoe2FsZzpcInJpcGVtZDE2MFwiLHByb3Y6XCJjcnlwdG9qc1wifSk7cmV0dXJuIGIuZGlnZXN0U3RyaW5nKGEpfTtLSlVSLmNyeXB0by5VdGlsLlNFQ1VSRVJBTkRPTUdFTj1uZXcgU2VjdXJlUmFuZG9tKCk7S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21IZXhPZk5ieXRlcz1mdW5jdGlvbihiKXt2YXIgYT1uZXcgQXJyYXkoYik7S0pVUi5jcnlwdG8uVXRpbC5TRUNVUkVSQU5ET01HRU4ubmV4dEJ5dGVzKGEpO3JldHVybiBCQXRvaGV4KGEpfTtLSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUJpZ0ludGVnZXJPZk5ieXRlcz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIoS0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21IZXhPZk5ieXRlcyhhKSwxNil9O0tKVVIuY3J5cHRvLlV0aWwuZ2V0UmFuZG9tSGV4T2ZOYml0cz1mdW5jdGlvbihkKXt2YXIgYz1kJTg7dmFyIGE9KGQtYykvODt2YXIgYj1uZXcgQXJyYXkoYSsxKTtLSlVSLmNyeXB0by5VdGlsLlNFQ1VSRVJBTkRPTUdFTi5uZXh0Qnl0ZXMoYik7YlswXT0oKCgyNTU8PGMpJjI1NSleMjU1KSZiWzBdO3JldHVybiBCQXRvaGV4KGIpfTtLSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUJpZ0ludGVnZXJPZk5iaXRzPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnSW50ZWdlcihLSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUhleE9mTmJpdHMoYSksMTYpfTtLSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUJpZ0ludGVnZXJaZXJvVG9NYXg9ZnVuY3Rpb24oYil7dmFyIGE9Yi5iaXRMZW5ndGgoKTt3aGlsZSgxKXt2YXIgYz1LSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUJpZ0ludGVnZXJPZk5iaXRzKGEpO2lmKGIuY29tcGFyZVRvKGMpIT0tMSl7cmV0dXJuIGN9fX07S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyTWluVG9NYXg9ZnVuY3Rpb24oZSxiKXt2YXIgYz1lLmNvbXBhcmVUbyhiKTtpZihjPT0xKXt0aHJvd1wiYmlNaW4gaXMgZ3JlYXRlciB0aGFuIGJpTWF4XCJ9aWYoYz09MCl7cmV0dXJuIGV9dmFyIGE9Yi5zdWJ0cmFjdChlKTt2YXIgZD1LSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUJpZ0ludGVnZXJaZXJvVG9NYXgoYSk7cmV0dXJuIGQuYWRkKGUpfTtLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0PWZ1bmN0aW9uKGMpe3ZhciBiPW51bGw7dmFyIGE9bnVsbDt2YXIgZD1udWxsO3RoaXMuc2V0QWxnQW5kUHJvdmlkZXI9ZnVuY3Rpb24oZyxmKXtnPUtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3QuZ2V0Q2Fub25pY2FsQWxnTmFtZShnKTtpZihnIT09bnVsbCYmZj09PXVuZGVmaW5lZCl7Zj1LSlVSLmNyeXB0by5VdGlsLkRFRkFVTFRQUk9WSURFUltnXX1pZihcIjptZDU6c2hhMTpzaGEyMjQ6c2hhMjU2OnNoYTM4NDpzaGE1MTI6cmlwZW1kMTYwOlwiLmluZGV4T2YoZykhPS0xJiZmPT1cImNyeXB0b2pzXCIpe3RyeXt0aGlzLm1kPUtKVVIuY3J5cHRvLlV0aWwuQ1JZUFRPSlNNRVNTQUdFRElHRVNUTkFNRVtnXS5jcmVhdGUoKX1jYXRjaChlKXt0aHJvd1wic2V0QWxnQW5kUHJvdmlkZXIgaGFzaCBhbGcgc2V0IGZhaWwgYWxnPVwiK2crXCIvXCIrZX10aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihoKXt0aGlzLm1kLnVwZGF0ZShoKX07dGhpcy51cGRhdGVIZXg9ZnVuY3Rpb24oaCl7dmFyIGk9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZShoKTt0aGlzLm1kLnVwZGF0ZShpKX07dGhpcy5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm1kLmZpbmFsaXplKCk7cmV0dXJuIGgudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCl9O3RoaXMuZGlnZXN0U3RyaW5nPWZ1bmN0aW9uKGgpe3RoaXMudXBkYXRlU3RyaW5nKGgpO3JldHVybiB0aGlzLmRpZ2VzdCgpfTt0aGlzLmRpZ2VzdEhleD1mdW5jdGlvbihoKXt0aGlzLnVwZGF0ZUhleChoKTtyZXR1cm4gdGhpcy5kaWdlc3QoKX19aWYoXCI6c2hhMjU2OlwiLmluZGV4T2YoZykhPS0xJiZmPT1cInNqY2xcIil7dHJ5e3RoaXMubWQ9bmV3IHNqY2wuaGFzaC5zaGEyNTYoKX1jYXRjaChlKXt0aHJvd1wic2V0QWxnQW5kUHJvdmlkZXIgaGFzaCBhbGcgc2V0IGZhaWwgYWxnPVwiK2crXCIvXCIrZX10aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihoKXt0aGlzLm1kLnVwZGF0ZShoKX07dGhpcy51cGRhdGVIZXg9ZnVuY3Rpb24oaSl7dmFyIGg9c2pjbC5jb2RlYy5oZXgudG9CaXRzKGkpO3RoaXMubWQudXBkYXRlKGgpfTt0aGlzLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBoPXRoaXMubWQuZmluYWxpemUoKTtyZXR1cm4gc2pjbC5jb2RlYy5oZXguZnJvbUJpdHMoaCl9O3RoaXMuZGlnZXN0U3RyaW5nPWZ1bmN0aW9uKGgpe3RoaXMudXBkYXRlU3RyaW5nKGgpO3JldHVybiB0aGlzLmRpZ2VzdCgpfTt0aGlzLmRpZ2VzdEhleD1mdW5jdGlvbihoKXt0aGlzLnVwZGF0ZUhleChoKTtyZXR1cm4gdGhpcy5kaWdlc3QoKX19fTt0aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihlKXt0aHJvd1widXBkYXRlU3RyaW5nKHN0cikgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdOYW1lK1wiL1wiK3RoaXMucHJvdk5hbWV9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKGUpe3Rocm93XCJ1cGRhdGVIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ05hbWUrXCIvXCIrdGhpcy5wcm92TmFtZX07dGhpcy5kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvd1wiZGlnZXN0KCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdOYW1lK1wiL1wiK3RoaXMucHJvdk5hbWV9O3RoaXMuZGlnZXN0U3RyaW5nPWZ1bmN0aW9uKGUpe3Rocm93XCJkaWdlc3RTdHJpbmcoc3RyKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ05hbWUrXCIvXCIrdGhpcy5wcm92TmFtZX07dGhpcy5kaWdlc3RIZXg9ZnVuY3Rpb24oZSl7dGhyb3dcImRpZ2VzdEhleChoZXgpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnL3Byb3Y6IFwiK3RoaXMuYWxnTmFtZStcIi9cIit0aGlzLnByb3ZOYW1lfTtpZihjIT09dW5kZWZpbmVkKXtpZihjLmFsZyE9PXVuZGVmaW5lZCl7dGhpcy5hbGdOYW1lPWMuYWxnO2lmKGMucHJvdj09PXVuZGVmaW5lZCl7dGhpcy5wcm92TmFtZT1LSlVSLmNyeXB0by5VdGlsLkRFRkFVTFRQUk9WSURFUlt0aGlzLmFsZ05hbWVdfXRoaXMuc2V0QWxnQW5kUHJvdmlkZXIodGhpcy5hbGdOYW1lLHRoaXMucHJvdk5hbWUpfX19O0tKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3QuZ2V0Q2Fub25pY2FsQWxnTmFtZT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYT09PVwic3RyaW5nXCIpe2E9YS50b0xvd2VyQ2FzZSgpO2E9YS5yZXBsYWNlKC8tLyxcIlwiKX1yZXR1cm4gYX07S0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdC5nZXRIYXNoTGVuZ3RoPWZ1bmN0aW9uKGMpe3ZhciBiPUtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Q7dmFyIGE9Yi5nZXRDYW5vbmljYWxBbGdOYW1lKGMpO2lmKGIuSEFTSExFTkdUSFthXT09PXVuZGVmaW5lZCl7dGhyb3dcIm5vdCBzdXBwb3J0ZWQgYWxnb3JpdGhtOiBcIitjfXJldHVybiBiLkhBU0hMRU5HVEhbYV19O0tKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3QuSEFTSExFTkdUSD17bWQ1OjE2LHNoYTE6MjAsc2hhMjI0OjI4LHNoYTI1NjozMixzaGEzODQ6NDgsc2hhNTEyOjY0LHJpcGVtZDE2MDoyMH07S0pVUi5jcnlwdG8uTWFjPWZ1bmN0aW9uKGQpe3ZhciBmPW51bGw7dmFyIGM9bnVsbDt2YXIgYT1udWxsO3ZhciBlPW51bGw7dmFyIGI9bnVsbDt0aGlzLnNldEFsZ0FuZFByb3ZpZGVyPWZ1bmN0aW9uKGssaSl7az1rLnRvTG93ZXJDYXNlKCk7aWYoaz09bnVsbCl7az1cImhtYWNzaGExXCJ9az1rLnRvTG93ZXJDYXNlKCk7aWYoay5zdWJzdHIoMCw0KSE9XCJobWFjXCIpe3Rocm93XCJzZXRBbGdBbmRQcm92aWRlciB1bnN1cHBvcnRlZCBITUFDIGFsZzogXCIra31pZihpPT09dW5kZWZpbmVkKXtpPUtKVVIuY3J5cHRvLlV0aWwuREVGQVVMVFBST1ZJREVSW2tdfXRoaXMuYWxnUHJvdj1rK1wiL1wiK2k7dmFyIGc9ay5zdWJzdHIoNCk7aWYoXCI6bWQ1OnNoYTE6c2hhMjI0OnNoYTI1NjpzaGEzODQ6c2hhNTEyOnJpcGVtZDE2MDpcIi5pbmRleE9mKGcpIT0tMSYmaT09XCJjcnlwdG9qc1wiKXt0cnl7dmFyIGo9S0pVUi5jcnlwdG8uVXRpbC5DUllQVE9KU01FU1NBR0VESUdFU1ROQU1FW2ddO3RoaXMubWFjPUNyeXB0b0pTLmFsZ28uSE1BQy5jcmVhdGUoaix0aGlzLnBhc3MpfWNhdGNoKGgpe3Rocm93XCJzZXRBbGdBbmRQcm92aWRlciBoYXNoIGFsZyBzZXQgZmFpbCBoYXNoQWxnPVwiK2crXCIvXCIraH10aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihsKXt0aGlzLm1hYy51cGRhdGUobCl9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKGwpe3ZhciBtPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UobCk7dGhpcy5tYWMudXBkYXRlKG0pfTt0aGlzLmRvRmluYWw9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLm1hYy5maW5hbGl6ZSgpO3JldHVybiBsLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpfTt0aGlzLmRvRmluYWxTdHJpbmc9ZnVuY3Rpb24obCl7dGhpcy51cGRhdGVTdHJpbmcobCk7cmV0dXJuIHRoaXMuZG9GaW5hbCgpfTt0aGlzLmRvRmluYWxIZXg9ZnVuY3Rpb24obCl7dGhpcy51cGRhdGVIZXgobCk7cmV0dXJuIHRoaXMuZG9GaW5hbCgpfX19O3RoaXMudXBkYXRlU3RyaW5nPWZ1bmN0aW9uKGcpe3Rocm93XCJ1cGRhdGVTdHJpbmcoc3RyKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ1Byb3Z9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKGcpe3Rocm93XCJ1cGRhdGVIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ1Byb3Z9O3RoaXMuZG9GaW5hbD1mdW5jdGlvbigpe3Rocm93XCJkaWdlc3QoKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ1Byb3Z9O3RoaXMuZG9GaW5hbFN0cmluZz1mdW5jdGlvbihnKXt0aHJvd1wiZGlnZXN0U3RyaW5nKHN0cikgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdQcm92fTt0aGlzLmRvRmluYWxIZXg9ZnVuY3Rpb24oZyl7dGhyb3dcImRpZ2VzdEhleChoZXgpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnL3Byb3Y6IFwiK3RoaXMuYWxnUHJvdn07dGhpcy5zZXRQYXNzd29yZD1mdW5jdGlvbihoKXtpZih0eXBlb2YgaD09XCJzdHJpbmdcIil7dmFyIGc9aDtpZihoLmxlbmd0aCUyPT0xfHwhaC5tYXRjaCgvXlswLTlBLUZhLWZdKyQvKSl7Zz1yc3RydG9oZXgoaCl9dGhpcy5wYXNzPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoZyk7cmV0dXJufWlmKHR5cGVvZiBoIT1cIm9iamVjdFwiKXt0aHJvd1wiS0pVUi5jcnlwdG8uTWFjIHVuc3VwcG9ydGVkIHBhc3N3b3JkIHR5cGU6IFwiK2h9dmFyIGc9bnVsbDtpZihoLmhleCE9PXVuZGVmaW5lZCl7aWYoaC5oZXgubGVuZ3RoJTIhPTB8fCFoLmhleC5tYXRjaCgvXlswLTlBLUZhLWZdKyQvKSl7dGhyb3dcIk1hYzogd3JvbmcgaGV4IHBhc3N3b3JkOiBcIitoLmhleH1nPWguaGV4fWlmKGgudXRmOCE9PXVuZGVmaW5lZCl7Zz11dGY4dG9oZXgoaC51dGY4KX1pZihoLnJzdHIhPT11bmRlZmluZWQpe2c9cnN0cnRvaGV4KGgucnN0cil9aWYoaC5iNjQhPT11bmRlZmluZWQpe2c9YjY0dG9oZXgoaC5iNjQpfWlmKGguYjY0dSE9PXVuZGVmaW5lZCl7Zz1iNjR1dG9oZXgoaC5iNjR1KX1pZihnPT1udWxsKXt0aHJvd1wiS0pVUi5jcnlwdG8uTWFjIHVuc3VwcG9ydGVkIHBhc3N3b3JkIHR5cGU6IFwiK2h9dGhpcy5wYXNzPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoZyl9O2lmKGQhPT11bmRlZmluZWQpe2lmKGQucGFzcyE9PXVuZGVmaW5lZCl7dGhpcy5zZXRQYXNzd29yZChkLnBhc3MpfWlmKGQuYWxnIT09dW5kZWZpbmVkKXt0aGlzLmFsZ05hbWU9ZC5hbGc7aWYoZC5wcm92PT09dW5kZWZpbmVkKXt0aGlzLnByb3ZOYW1lPUtKVVIuY3J5cHRvLlV0aWwuREVGQVVMVFBST1ZJREVSW3RoaXMuYWxnTmFtZV19dGhpcy5zZXRBbGdBbmRQcm92aWRlcih0aGlzLmFsZ05hbWUsdGhpcy5wcm92TmFtZSl9fX07S0pVUi5jcnlwdG8uU2lnbmF0dXJlPWZ1bmN0aW9uKG8pe3ZhciBxPW51bGw7dmFyIG49bnVsbDt2YXIgcj1udWxsO3ZhciBjPW51bGw7dmFyIGw9bnVsbDt2YXIgZD1udWxsO3ZhciBrPW51bGw7dmFyIGg9bnVsbDt2YXIgcD1udWxsO3ZhciBlPW51bGw7dmFyIGI9LTE7dmFyIGc9bnVsbDt2YXIgaj1udWxsO3ZhciBhPW51bGw7dmFyIGk9bnVsbDt2YXIgZj1udWxsO3RoaXMuX3NldEFsZ05hbWVzPWZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5hbGdOYW1lLm1hdGNoKC9eKC4rKXdpdGgoLispJC8pO2lmKHMpe3RoaXMubWRBbGdOYW1lPXNbMV0udG9Mb3dlckNhc2UoKTt0aGlzLnB1YmtleUFsZ05hbWU9c1syXS50b0xvd2VyQ2FzZSgpfX07dGhpcy5femVyb1BhZGRpbmdPZlNpZ25hdHVyZT1mdW5jdGlvbih4LHcpe3ZhciB2PVwiXCI7dmFyIHQ9dy80LXgubGVuZ3RoO2Zvcih2YXIgdT0wO3U8dDt1Kyspe3Y9ditcIjBcIn1yZXR1cm4gdit4fTt0aGlzLnNldEFsZ0FuZFByb3ZpZGVyPWZ1bmN0aW9uKHUsdCl7dGhpcy5fc2V0QWxnTmFtZXMoKTtpZih0IT1cImNyeXB0b2pzL2pzcnNhXCIpe3Rocm93XCJwcm92aWRlciBub3Qgc3VwcG9ydGVkOiBcIit0fWlmKFwiOm1kNTpzaGExOnNoYTIyNDpzaGEyNTY6c2hhMzg0OnNoYTUxMjpyaXBlbWQxNjA6XCIuaW5kZXhPZih0aGlzLm1kQWxnTmFtZSkhPS0xKXt0cnl7dGhpcy5tZD1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOnRoaXMubWRBbGdOYW1lfSl9Y2F0Y2gocyl7dGhyb3dcInNldEFsZ0FuZFByb3ZpZGVyIGhhc2ggYWxnIHNldCBmYWlsIGFsZz1cIit0aGlzLm1kQWxnTmFtZStcIi9cIitzfXRoaXMuaW5pdD1mdW5jdGlvbih3LHgpe3ZhciB5PW51bGw7dHJ5e2lmKHg9PT11bmRlZmluZWQpe3k9S0VZVVRJTC5nZXRLZXkodyl9ZWxzZXt5PUtFWVVUSUwuZ2V0S2V5KHcseCl9fWNhdGNoKHYpe3Rocm93XCJpbml0IGZhaWxlZDpcIit2fWlmKHkuaXNQcml2YXRlPT09dHJ1ZSl7dGhpcy5wcnZLZXk9eTt0aGlzLnN0YXRlPVwiU0lHTlwifWVsc2V7aWYoeS5pc1B1YmxpYz09PXRydWUpe3RoaXMucHViS2V5PXk7dGhpcy5zdGF0ZT1cIlZFUklGWVwifWVsc2V7dGhyb3dcImluaXQgZmFpbGVkLjpcIit5fX19O3RoaXMudXBkYXRlU3RyaW5nPWZ1bmN0aW9uKHYpe3RoaXMubWQudXBkYXRlU3RyaW5nKHYpfTt0aGlzLnVwZGF0ZUhleD1mdW5jdGlvbih2KXt0aGlzLm1kLnVwZGF0ZUhleCh2KX07dGhpcy5zaWduPWZ1bmN0aW9uKCl7dGhpcy5zSGFzaEhleD10aGlzLm1kLmRpZ2VzdCgpO2lmKHR5cGVvZiB0aGlzLmVjcHJ2aGV4IT1cInVuZGVmaW5lZFwiJiZ0eXBlb2YgdGhpcy5lY2N1cnZlbmFtZSE9XCJ1bmRlZmluZWRcIil7dmFyIHY9bmV3IEtKVVIuY3J5cHRvLkVDRFNBKHtjdXJ2ZTp0aGlzLmVjY3VydmVuYW1lfSk7dGhpcy5oU2lnbj12LnNpZ25IZXgodGhpcy5zSGFzaEhleCx0aGlzLmVjcHJ2aGV4KX1lbHNle2lmKHRoaXMucHJ2S2V5IGluc3RhbmNlb2YgUlNBS2V5JiZ0aGlzLnB1YmtleUFsZ05hbWU9PT1cInJzYWFuZG1nZjFcIil7dGhpcy5oU2lnbj10aGlzLnBydktleS5zaWduV2l0aE1lc3NhZ2VIYXNoUFNTKHRoaXMuc0hhc2hIZXgsdGhpcy5tZEFsZ05hbWUsdGhpcy5wc3NTYWx0TGVuKX1lbHNle2lmKHRoaXMucHJ2S2V5IGluc3RhbmNlb2YgUlNBS2V5JiZ0aGlzLnB1YmtleUFsZ05hbWU9PT1cInJzYVwiKXt0aGlzLmhTaWduPXRoaXMucHJ2S2V5LnNpZ25XaXRoTWVzc2FnZUhhc2godGhpcy5zSGFzaEhleCx0aGlzLm1kQWxnTmFtZSl9ZWxzZXtpZih0aGlzLnBydktleSBpbnN0YW5jZW9mIEtKVVIuY3J5cHRvLkVDRFNBKXt0aGlzLmhTaWduPXRoaXMucHJ2S2V5LnNpZ25XaXRoTWVzc2FnZUhhc2godGhpcy5zSGFzaEhleCl9ZWxzZXtpZih0aGlzLnBydktleSBpbnN0YW5jZW9mIEtKVVIuY3J5cHRvLkRTQSl7dGhpcy5oU2lnbj10aGlzLnBydktleS5zaWduV2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgpfWVsc2V7dGhyb3dcIlNpZ25hdHVyZTogdW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXkgYWxnOiBcIit0aGlzLnB1YmtleUFsZ05hbWV9fX19fXJldHVybiB0aGlzLmhTaWdufTt0aGlzLnNpZ25TdHJpbmc9ZnVuY3Rpb24odil7dGhpcy51cGRhdGVTdHJpbmcodik7cmV0dXJuIHRoaXMuc2lnbigpfTt0aGlzLnNpZ25IZXg9ZnVuY3Rpb24odil7dGhpcy51cGRhdGVIZXgodik7cmV0dXJuIHRoaXMuc2lnbigpfTt0aGlzLnZlcmlmeT1mdW5jdGlvbih2KXt0aGlzLnNIYXNoSGV4PXRoaXMubWQuZGlnZXN0KCk7aWYodHlwZW9mIHRoaXMuZWNwdWJoZXghPVwidW5kZWZpbmVkXCImJnR5cGVvZiB0aGlzLmVjY3VydmVuYW1lIT1cInVuZGVmaW5lZFwiKXt2YXIgdz1uZXcgS0pVUi5jcnlwdG8uRUNEU0Eoe2N1cnZlOnRoaXMuZWNjdXJ2ZW5hbWV9KTtyZXR1cm4gdy52ZXJpZnlIZXgodGhpcy5zSGFzaEhleCx2LHRoaXMuZWNwdWJoZXgpfWVsc2V7aWYodGhpcy5wdWJLZXkgaW5zdGFuY2VvZiBSU0FLZXkmJnRoaXMucHVia2V5QWxnTmFtZT09PVwicnNhYW5kbWdmMVwiKXtyZXR1cm4gdGhpcy5wdWJLZXkudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoUFNTKHRoaXMuc0hhc2hIZXgsdix0aGlzLm1kQWxnTmFtZSx0aGlzLnBzc1NhbHRMZW4pfWVsc2V7aWYodGhpcy5wdWJLZXkgaW5zdGFuY2VvZiBSU0FLZXkmJnRoaXMucHVia2V5QWxnTmFtZT09PVwicnNhXCIpe3JldHVybiB0aGlzLnB1YktleS52ZXJpZnlXaXRoTWVzc2FnZUhhc2godGhpcy5zSGFzaEhleCx2KX1lbHNle2lmKEtKVVIuY3J5cHRvLkVDRFNBIT09dW5kZWZpbmVkJiZ0aGlzLnB1YktleSBpbnN0YW5jZW9mIEtKVVIuY3J5cHRvLkVDRFNBKXtyZXR1cm4gdGhpcy5wdWJLZXkudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgsdil9ZWxzZXtpZihLSlVSLmNyeXB0by5EU0EhPT11bmRlZmluZWQmJnRoaXMucHViS2V5IGluc3RhbmNlb2YgS0pVUi5jcnlwdG8uRFNBKXtyZXR1cm4gdGhpcy5wdWJLZXkudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgsdil9ZWxzZXt0aHJvd1wiU2lnbmF0dXJlOiB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGFsZzogXCIrdGhpcy5wdWJrZXlBbGdOYW1lfX19fX19fX07dGhpcy5pbml0PWZ1bmN0aW9uKHMsdCl7dGhyb3dcImluaXQoa2V5LCBwYXNzKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZzpwcm92PVwiK3RoaXMuYWxnUHJvdk5hbWV9O3RoaXMudXBkYXRlU3RyaW5nPWZ1bmN0aW9uKHMpe3Rocm93XCJ1cGRhdGVTdHJpbmcoc3RyKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZzpwcm92PVwiK3RoaXMuYWxnUHJvdk5hbWV9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKHMpe3Rocm93XCJ1cGRhdGVIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZzpwcm92PVwiK3RoaXMuYWxnUHJvdk5hbWV9O3RoaXMuc2lnbj1mdW5jdGlvbigpe3Rocm93XCJzaWduKCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLnNpZ25TdHJpbmc9ZnVuY3Rpb24ocyl7dGhyb3dcImRpZ2VzdFN0cmluZyhzdHIpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnOnByb3Y9XCIrdGhpcy5hbGdQcm92TmFtZX07dGhpcy5zaWduSGV4PWZ1bmN0aW9uKHMpe3Rocm93XCJkaWdlc3RIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZzpwcm92PVwiK3RoaXMuYWxnUHJvdk5hbWV9O3RoaXMudmVyaWZ5PWZ1bmN0aW9uKHMpe3Rocm93XCJ2ZXJpZnkoaFNpZ1ZhbCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLmluaXRQYXJhbXM9bztpZihvIT09dW5kZWZpbmVkKXtpZihvLmFsZyE9PXVuZGVmaW5lZCl7dGhpcy5hbGdOYW1lPW8uYWxnO2lmKG8ucHJvdj09PXVuZGVmaW5lZCl7dGhpcy5wcm92TmFtZT1LSlVSLmNyeXB0by5VdGlsLkRFRkFVTFRQUk9WSURFUlt0aGlzLmFsZ05hbWVdfWVsc2V7dGhpcy5wcm92TmFtZT1vLnByb3Z9dGhpcy5hbGdQcm92TmFtZT10aGlzLmFsZ05hbWUrXCI6XCIrdGhpcy5wcm92TmFtZTt0aGlzLnNldEFsZ0FuZFByb3ZpZGVyKHRoaXMuYWxnTmFtZSx0aGlzLnByb3ZOYW1lKTt0aGlzLl9zZXRBbGdOYW1lcygpfWlmKG8ucHNzc2FsdGxlbiE9PXVuZGVmaW5lZCl7dGhpcy5wc3NTYWx0TGVuPW8ucHNzc2FsdGxlbn1pZihvLnBydmtleXBlbSE9PXVuZGVmaW5lZCl7aWYoby5wcnZrZXlwYXMhPT11bmRlZmluZWQpe3Rocm93XCJib3RoIHBydmtleXBlbSBhbmQgcHJ2a2V5cGFzIHBhcmFtZXRlcnMgbm90IHN1cHBvcnRlZFwifWVsc2V7dHJ5e3ZhciBxPUtFWVVUSUwuZ2V0S2V5KG8ucHJ2a2V5cGVtKTt0aGlzLmluaXQocSl9Y2F0Y2gobSl7dGhyb3dcImZhdGFsIGVycm9yIHRvIGxvYWQgcGVtIHByaXZhdGUga2V5OiBcIittfX19fX07S0pVUi5jcnlwdG8uQ2lwaGVyPWZ1bmN0aW9uKGEpe307S0pVUi5jcnlwdG8uQ2lwaGVyLmVuY3J5cHQ9ZnVuY3Rpb24oZSxmLGQpe2lmKGYgaW5zdGFuY2VvZiBSU0FLZXkmJmYuaXNQdWJsaWMpe3ZhciBjPUtKVVIuY3J5cHRvLkNpcGhlci5nZXRBbGdCeUtleUFuZE5hbWUoZixkKTtpZihjPT09XCJSU0FcIil7cmV0dXJuIGYuZW5jcnlwdChlKX1pZihjPT09XCJSU0FPQUVQXCIpe3JldHVybiBmLmVuY3J5cHRPQUVQKGUsXCJzaGExXCIpfXZhciBiPWMubWF0Y2goL15SU0FPQUVQKFxcZCspJC8pO2lmKGIhPT1udWxsKXtyZXR1cm4gZi5lbmNyeXB0T0FFUChlLFwic2hhXCIrYlsxXSl9dGhyb3dcIkNpcGhlci5lbmNyeXB0OiB1bnN1cHBvcnRlZCBhbGdvcml0aG0gZm9yIFJTQUtleTogXCIrZH1lbHNle3Rocm93XCJDaXBoZXIuZW5jcnlwdDogdW5zdXBwb3J0ZWQga2V5IG9yIGFsZ29yaXRobVwifX07S0pVUi5jcnlwdG8uQ2lwaGVyLmRlY3J5cHQ9ZnVuY3Rpb24oZSxmLGQpe2lmKGYgaW5zdGFuY2VvZiBSU0FLZXkmJmYuaXNQcml2YXRlKXt2YXIgYz1LSlVSLmNyeXB0by5DaXBoZXIuZ2V0QWxnQnlLZXlBbmROYW1lKGYsZCk7aWYoYz09PVwiUlNBXCIpe3JldHVybiBmLmRlY3J5cHQoZSl9aWYoYz09PVwiUlNBT0FFUFwiKXtyZXR1cm4gZi5kZWNyeXB0T0FFUChlLFwic2hhMVwiKX12YXIgYj1jLm1hdGNoKC9eUlNBT0FFUChcXGQrKSQvKTtpZihiIT09bnVsbCl7cmV0dXJuIGYuZGVjcnlwdE9BRVAoZSxcInNoYVwiK2JbMV0pfXRocm93XCJDaXBoZXIuZGVjcnlwdDogdW5zdXBwb3J0ZWQgYWxnb3JpdGhtIGZvciBSU0FLZXk6IFwiK2R9ZWxzZXt0aHJvd1wiQ2lwaGVyLmRlY3J5cHQ6IHVuc3VwcG9ydGVkIGtleSBvciBhbGdvcml0aG1cIn19O0tKVVIuY3J5cHRvLkNpcGhlci5nZXRBbGdCeUtleUFuZE5hbWU9ZnVuY3Rpb24oYixhKXtpZihiIGluc3RhbmNlb2YgUlNBS2V5KXtpZihcIjpSU0E6UlNBT0FFUDpSU0FPQUVQMjI0OlJTQU9BRVAyNTY6UlNBT0FFUDM4NDpSU0FPQUVQNTEyOlwiLmluZGV4T2YoYSkhPS0xKXtyZXR1cm4gYX1pZihhPT09bnVsbHx8YT09PXVuZGVmaW5lZCl7cmV0dXJuXCJSU0FcIn10aHJvd1wiZ2V0QWxnQnlLZXlBbmROYW1lOiBub3Qgc3VwcG9ydGVkIGFsZ29yaXRobSBuYW1lIGZvciBSU0FLZXk6IFwiK2F9dGhyb3dcImdldEFsZ0J5S2V5QW5kTmFtZTogbm90IHN1cHBvcnRlZCBhbGdvcml0aG0gbmFtZTogXCIrYX07S0pVUi5jcnlwdG8uT0lEPW5ldyBmdW5jdGlvbigpe3RoaXMub2lkaGV4Mm5hbWU9e1wiMmE4NjQ4ODZmNzBkMDEwMTAxXCI6XCJyc2FFbmNyeXB0aW9uXCIsXCIyYTg2NDhjZTNkMDIwMVwiOlwiZWNQdWJsaWNLZXlcIixcIjJhODY0OGNlMzgwNDAxXCI6XCJkc2FcIixcIjJhODY0OGNlM2QwMzAxMDdcIjpcInNlY3AyNTZyMVwiLFwiMmI4MTA0MDAxZlwiOlwic2VjcDE5MmsxXCIsXCIyYjgxMDQwMDIxXCI6XCJzZWNwMjI0cjFcIixcIjJiODEwNDAwMGFcIjpcInNlY3AyNTZrMVwiLFwiMmI4MTA0MDAyM1wiOlwic2VjcDUyMXIxXCIsXCIyYjgxMDQwMDIyXCI6XCJzZWNwMzg0cjFcIixcIjJhODY0OGNlMzgwNDAzXCI6XCJTSEExd2l0aERTQVwiLFwiNjA4NjQ4MDE2NTAzMDQwMzAxXCI6XCJTSEEyMjR3aXRoRFNBXCIsXCI2MDg2NDgwMTY1MDMwNDAzMDJcIjpcIlNIQTI1NndpdGhEU0FcIix9fTtcbmlmKHR5cGVvZiBLSlVSPT1cInVuZGVmaW5lZFwifHwhS0pVUil7S0pVUj17fX1pZih0eXBlb2YgS0pVUi5jcnlwdG89PVwidW5kZWZpbmVkXCJ8fCFLSlVSLmNyeXB0byl7S0pVUi5jcnlwdG89e319S0pVUi5jcnlwdG8uRUNEU0E9ZnVuY3Rpb24oaCl7dmFyIGU9XCJzZWNwMjU2cjFcIjt2YXIgZz1udWxsO3ZhciBiPW51bGw7dmFyIGY9bnVsbDt2YXIgYT1uZXcgU2VjdXJlUmFuZG9tKCk7dmFyIGQ9bnVsbDt0aGlzLnR5cGU9XCJFQ1wiO3RoaXMuaXNQcml2YXRlPWZhbHNlO3RoaXMuaXNQdWJsaWM9ZmFsc2U7ZnVuY3Rpb24gYyhzLG8scixuKXt2YXIgaj1NYXRoLm1heChvLmJpdExlbmd0aCgpLG4uYml0TGVuZ3RoKCkpO3ZhciB0PXMuYWRkMkQocik7dmFyIHE9cy5jdXJ2ZS5nZXRJbmZpbml0eSgpO2Zvcih2YXIgcD1qLTE7cD49MDstLXApe3E9cS50d2ljZTJEKCk7cS56PUJpZ0ludGVnZXIuT05FO2lmKG8udGVzdEJpdChwKSl7aWYobi50ZXN0Qml0KHApKXtxPXEuYWRkMkQodCl9ZWxzZXtxPXEuYWRkMkQocyl9fWVsc2V7aWYobi50ZXN0Qml0KHApKXtxPXEuYWRkMkQocil9fX1yZXR1cm4gcX10aGlzLmdldEJpZ1JhbmRvbT1mdW5jdGlvbihpKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIoaS5iaXRMZW5ndGgoKSxhKS5tb2QoaS5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSkpLmFkZChCaWdJbnRlZ2VyLk9ORSl9O3RoaXMuc2V0TmFtZWRDdXJ2ZT1mdW5jdGlvbihpKXt0aGlzLmVjcGFyYW1zPUtKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIuZ2V0QnlOYW1lKGkpO3RoaXMucHJ2S2V5SGV4PW51bGw7dGhpcy5wdWJLZXlIZXg9bnVsbDt0aGlzLmN1cnZlTmFtZT1pfTt0aGlzLnNldFByaXZhdGVLZXlIZXg9ZnVuY3Rpb24oaSl7dGhpcy5pc1ByaXZhdGU9dHJ1ZTt0aGlzLnBydktleUhleD1pfTt0aGlzLnNldFB1YmxpY0tleUhleD1mdW5jdGlvbihpKXt0aGlzLmlzUHVibGljPXRydWU7dGhpcy5wdWJLZXlIZXg9aX07dGhpcy5nZXRQdWJsaWNLZXlYWUhleD1mdW5jdGlvbigpe3ZhciBrPXRoaXMucHViS2V5SGV4O2lmKGsuc3Vic3RyKDAsMikhPT1cIjA0XCIpe3Rocm93XCJ0aGlzIG1ldGhvZCBzdXBwb3J0cyB1bmNvbXByZXNzZWQgZm9ybWF0KDA0KSBvbmx5XCJ9dmFyIGo9dGhpcy5lY3BhcmFtcy5rZXlsZW4vNDtpZihrLmxlbmd0aCE9PTIraioyKXt0aHJvd1wibWFsZm9ybWVkIHB1YmxpYyBrZXkgaGV4IGxlbmd0aFwifXZhciBpPXt9O2kueD1rLnN1YnN0cigyLGopO2kueT1rLnN1YnN0cigyK2opO3JldHVybiBpfTt0aGlzLmdldFNob3J0TklTVFBDdXJ2ZU5hbWU9ZnVuY3Rpb24oKXt2YXIgaT10aGlzLmN1cnZlTmFtZTtpZihpPT09XCJzZWNwMjU2cjFcInx8aT09PVwiTklTVCBQLTI1NlwifHxpPT09XCJQLTI1NlwifHxpPT09XCJwcmltZTI1NnYxXCIpe3JldHVyblwiUC0yNTZcIn1pZihpPT09XCJzZWNwMzg0cjFcInx8aT09PVwiTklTVCBQLTM4NFwifHxpPT09XCJQLTM4NFwiKXtyZXR1cm5cIlAtMzg0XCJ9cmV0dXJuIG51bGx9O3RoaXMuZ2VuZXJhdGVLZXlQYWlySGV4PWZ1bmN0aW9uKCl7dmFyIGs9dGhpcy5lY3BhcmFtcy5uO3ZhciBuPXRoaXMuZ2V0QmlnUmFuZG9tKGspO3ZhciBsPXRoaXMuZWNwYXJhbXMuRy5tdWx0aXBseShuKTt2YXIgcT1sLmdldFgoKS50b0JpZ0ludGVnZXIoKTt2YXIgbz1sLmdldFkoKS50b0JpZ0ludGVnZXIoKTt2YXIgaT10aGlzLmVjcGFyYW1zLmtleWxlbi80O3ZhciBtPShcIjAwMDAwMDAwMDBcIituLnRvU3RyaW5nKDE2KSkuc2xpY2UoLWkpO3ZhciByPShcIjAwMDAwMDAwMDBcIitxLnRvU3RyaW5nKDE2KSkuc2xpY2UoLWkpO3ZhciBwPShcIjAwMDAwMDAwMDBcIitvLnRvU3RyaW5nKDE2KSkuc2xpY2UoLWkpO3ZhciBqPVwiMDRcIityK3A7dGhpcy5zZXRQcml2YXRlS2V5SGV4KG0pO3RoaXMuc2V0UHVibGljS2V5SGV4KGopO3JldHVybntlY3BydmhleDptLGVjcHViaGV4Omp9fTt0aGlzLnNpZ25XaXRoTWVzc2FnZUhhc2g9ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXMuc2lnbkhleChpLHRoaXMucHJ2S2V5SGV4KX07dGhpcy5zaWduSGV4PWZ1bmN0aW9uKG8sail7dmFyIHQ9bmV3IEJpZ0ludGVnZXIoaiwxNik7dmFyIGw9dGhpcy5lY3BhcmFtcy5uO3ZhciBxPW5ldyBCaWdJbnRlZ2VyKG8sMTYpO2Rve3ZhciBtPXRoaXMuZ2V0QmlnUmFuZG9tKGwpO3ZhciB1PXRoaXMuZWNwYXJhbXMuRzt2YXIgcD11Lm11bHRpcGx5KG0pO3ZhciBpPXAuZ2V0WCgpLnRvQmlnSW50ZWdlcigpLm1vZChsKX13aGlsZShpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPD0wKTt2YXIgdj1tLm1vZEludmVyc2UobCkubXVsdGlwbHkocS5hZGQodC5tdWx0aXBseShpKSkpLm1vZChsKTtyZXR1cm4gS0pVUi5jcnlwdG8uRUNEU0EuYmlSU1NpZ1RvQVNOMVNpZyhpLHYpfTt0aGlzLnNpZ249ZnVuY3Rpb24obSx1KXt2YXIgcT11O3ZhciBqPXRoaXMuZWNwYXJhbXMubjt2YXIgcD1CaWdJbnRlZ2VyLmZyb21CeXRlQXJyYXlVbnNpZ25lZChtKTtkb3t2YXIgbD10aGlzLmdldEJpZ1JhbmRvbShqKTt2YXIgdD10aGlzLmVjcGFyYW1zLkc7dmFyIG89dC5tdWx0aXBseShsKTt2YXIgaT1vLmdldFgoKS50b0JpZ0ludGVnZXIoKS5tb2Qoail9d2hpbGUoaS5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKTw9MCk7dmFyIHY9bC5tb2RJbnZlcnNlKGopLm11bHRpcGx5KHAuYWRkKHEubXVsdGlwbHkoaSkpKS5tb2Qoaik7cmV0dXJuIHRoaXMuc2VyaWFsaXplU2lnKGksdil9O3RoaXMudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoPWZ1bmN0aW9uKGosaSl7cmV0dXJuIHRoaXMudmVyaWZ5SGV4KGosaSx0aGlzLnB1YktleUhleCl9O3RoaXMudmVyaWZ5SGV4PWZ1bmN0aW9uKG0saSxwKXt2YXIgbCxqO3ZhciBvPUtKVVIuY3J5cHRvLkVDRFNBLnBhcnNlU2lnSGV4KGkpO2w9by5yO2o9by5zO3ZhciBrO2s9RUNQb2ludEZwLmRlY29kZUZyb21IZXgodGhpcy5lY3BhcmFtcy5jdXJ2ZSxwKTt2YXIgbj1uZXcgQmlnSW50ZWdlcihtLDE2KTtyZXR1cm4gdGhpcy52ZXJpZnlSYXcobixsLGosayl9O3RoaXMudmVyaWZ5PWZ1bmN0aW9uKG8scCxqKXt2YXIgbCxpO2lmKEJpdGNvaW4uVXRpbC5pc0FycmF5KHApKXt2YXIgbj10aGlzLnBhcnNlU2lnKHApO2w9bi5yO2k9bi5zfWVsc2V7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwJiZwLnImJnAucyl7bD1wLnI7aT1wLnN9ZWxzZXt0aHJvd1wiSW52YWxpZCB2YWx1ZSBmb3Igc2lnbmF0dXJlXCJ9fXZhciBrO2lmKGogaW5zdGFuY2VvZiBFQ1BvaW50RnApe2s9an1lbHNle2lmKEJpdGNvaW4uVXRpbC5pc0FycmF5KGopKXtrPUVDUG9pbnRGcC5kZWNvZGVGcm9tKHRoaXMuZWNwYXJhbXMuY3VydmUsail9ZWxzZXt0aHJvd1wiSW52YWxpZCBmb3JtYXQgZm9yIHB1YmtleSB2YWx1ZSwgbXVzdCBiZSBieXRlIGFycmF5IG9yIEVDUG9pbnRGcFwifX12YXIgbT1CaWdJbnRlZ2VyLmZyb21CeXRlQXJyYXlVbnNpZ25lZChvKTtyZXR1cm4gdGhpcy52ZXJpZnlSYXcobSxsLGksayl9O3RoaXMudmVyaWZ5UmF3PWZ1bmN0aW9uKG8saSx3LG0pe3ZhciBsPXRoaXMuZWNwYXJhbXMubjt2YXIgdT10aGlzLmVjcGFyYW1zLkc7aWYoaS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpPDB8fGkuY29tcGFyZVRvKGwpPj0wKXtyZXR1cm4gZmFsc2V9aWYody5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpPDB8fHcuY29tcGFyZVRvKGwpPj0wKXtyZXR1cm4gZmFsc2V9dmFyIHA9dy5tb2RJbnZlcnNlKGwpO3ZhciBrPW8ubXVsdGlwbHkocCkubW9kKGwpO3ZhciBqPWkubXVsdGlwbHkocCkubW9kKGwpO3ZhciBxPXUubXVsdGlwbHkoaykuYWRkKG0ubXVsdGlwbHkoaikpO3ZhciB0PXEuZ2V0WCgpLnRvQmlnSW50ZWdlcigpLm1vZChsKTtyZXR1cm4gdC5lcXVhbHMoaSl9O3RoaXMuc2VyaWFsaXplU2lnPWZ1bmN0aW9uKGssail7dmFyIGw9ay50b0J5dGVBcnJheVNpZ25lZCgpO3ZhciBpPWoudG9CeXRlQXJyYXlTaWduZWQoKTt2YXIgbT1bXTttLnB1c2goMik7bS5wdXNoKGwubGVuZ3RoKTttPW0uY29uY2F0KGwpO20ucHVzaCgyKTttLnB1c2goaS5sZW5ndGgpO209bS5jb25jYXQoaSk7bS51bnNoaWZ0KG0ubGVuZ3RoKTttLnVuc2hpZnQoNDgpO3JldHVybiBtfTt0aGlzLnBhcnNlU2lnPWZ1bmN0aW9uKG4pe3ZhciBtO2lmKG5bMF0hPTQ4KXt0aHJvdyBuZXcgRXJyb3IoXCJTaWduYXR1cmUgbm90IGEgdmFsaWQgREVSU2VxdWVuY2VcIil9bT0yO2lmKG5bbV0hPTIpe3Rocm93IG5ldyBFcnJvcihcIkZpcnN0IGVsZW1lbnQgaW4gc2lnbmF0dXJlIG11c3QgYmUgYSBERVJJbnRlZ2VyXCIpfXZhciBsPW4uc2xpY2UobSsyLG0rMituW20rMV0pO20rPTIrblttKzFdO2lmKG5bbV0hPTIpe3Rocm93IG5ldyBFcnJvcihcIlNlY29uZCBlbGVtZW50IGluIHNpZ25hdHVyZSBtdXN0IGJlIGEgREVSSW50ZWdlclwiKX12YXIgaT1uLnNsaWNlKG0rMixtKzIrblttKzFdKTttKz0yK25bbSsxXTt2YXIgaz1CaWdJbnRlZ2VyLmZyb21CeXRlQXJyYXlVbnNpZ25lZChsKTt2YXIgaj1CaWdJbnRlZ2VyLmZyb21CeXRlQXJyYXlVbnNpZ25lZChpKTtyZXR1cm57cjprLHM6an19O3RoaXMucGFyc2VTaWdDb21wYWN0PWZ1bmN0aW9uKG0pe2lmKG0ubGVuZ3RoIT09NjUpe3Rocm93XCJTaWduYXR1cmUgaGFzIHRoZSB3cm9uZyBsZW5ndGhcIn12YXIgaj1tWzBdLTI3O2lmKGo8MHx8aj43KXt0aHJvd1wiSW52YWxpZCBzaWduYXR1cmUgdHlwZVwifXZhciBvPXRoaXMuZWNwYXJhbXMubjt2YXIgbD1CaWdJbnRlZ2VyLmZyb21CeXRlQXJyYXlVbnNpZ25lZChtLnNsaWNlKDEsMzMpKS5tb2Qobyk7dmFyIGs9QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQobS5zbGljZSgzMyw2NSkpLm1vZChvKTtyZXR1cm57cjpsLHM6ayxpOmp9fTt0aGlzLnJlYWRQS0NTNVBydktleUhleD1mdW5jdGlvbihsKXt2YXIgbj1BU04xSEVYO3ZhciBtPUtKVVIuY3J5cHRvLkVDRFNBLmdldE5hbWU7dmFyIHA9bi5nZXRWYnlMaXN0O2lmKG4uaXNBU04xSEVYKGwpPT09ZmFsc2Upe3Rocm93XCJub3QgQVNOLjEgaGV4IHN0cmluZ1wifXZhciBpLGssbzt0cnl7aT1wKGwsMCxbMiwwXSxcIjA2XCIpO2s9cChsLDAsWzFdLFwiMDRcIik7dHJ5e289cChsLDAsWzMsMF0sXCIwM1wiKS5zdWJzdHIoMil9Y2F0Y2goail7fX1jYXRjaChqKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1MjMS81IHBsYWluIEVDQyBwcml2YXRlIGtleVwifXRoaXMuY3VydmVOYW1lPW0oaSk7aWYodGhpcy5jdXJ2ZU5hbWU9PT11bmRlZmluZWQpe3Rocm93XCJ1bnN1cHBvcnRlZCBjdXJ2ZSBuYW1lXCJ9dGhpcy5zZXROYW1lZEN1cnZlKHRoaXMuY3VydmVOYW1lKTt0aGlzLnNldFB1YmxpY0tleUhleChvKTt0aGlzLnNldFByaXZhdGVLZXlIZXgoayk7dGhpcy5pc1B1YmxpYz1mYWxzZX07dGhpcy5yZWFkUEtDUzhQcnZLZXlIZXg9ZnVuY3Rpb24obCl7dmFyIHE9QVNOMUhFWDt2YXIgaT1LSlVSLmNyeXB0by5FQ0RTQS5nZXROYW1lO3ZhciBuPXEuZ2V0VmJ5TGlzdDtpZihxLmlzQVNOMUhFWChsKT09PWZhbHNlKXt0aHJvd1wibm90IEFTTi4xIGhleCBzdHJpbmdcIn12YXIgaixwLG0sazt0cnl7aj1uKGwsMCxbMSwwXSxcIjA2XCIpO3A9bihsLDAsWzEsMV0sXCIwNlwiKTttPW4obCwwLFsyLDAsMV0sXCIwNFwiKTt0cnl7az1uKGwsMCxbMiwwLDIsMF0sXCIwM1wiKS5zdWJzdHIoMil9Y2F0Y2gobyl7fX1jYXRjaChvKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1MjOCBwbGFpbiBFQ0MgcHJpdmF0ZSBrZXlcIn10aGlzLmN1cnZlTmFtZT1pKHApO2lmKHRoaXMuY3VydmVOYW1lPT09dW5kZWZpbmVkKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZVwifXRoaXMuc2V0TmFtZWRDdXJ2ZSh0aGlzLmN1cnZlTmFtZSk7dGhpcy5zZXRQdWJsaWNLZXlIZXgoayk7dGhpcy5zZXRQcml2YXRlS2V5SGV4KG0pO3RoaXMuaXNQdWJsaWM9ZmFsc2V9O3RoaXMucmVhZFBLQ1M4UHViS2V5SGV4PWZ1bmN0aW9uKGwpe3ZhciBuPUFTTjFIRVg7dmFyIG09S0pVUi5jcnlwdG8uRUNEU0EuZ2V0TmFtZTt2YXIgcD1uLmdldFZieUxpc3Q7aWYobi5pc0FTTjFIRVgobCk9PT1mYWxzZSl7dGhyb3dcIm5vdCBBU04uMSBoZXggc3RyaW5nXCJ9dmFyIGssaSxvO3RyeXtrPXAobCwwLFswLDBdLFwiMDZcIik7aT1wKGwsMCxbMCwxXSxcIjA2XCIpO289cChsLDAsWzFdLFwiMDNcIikuc3Vic3RyKDIpfWNhdGNoKGope3Rocm93XCJtYWxmb3JtZWQgUEtDUyM4IEVDQyBwdWJsaWMga2V5XCJ9dGhpcy5jdXJ2ZU5hbWU9bShpKTtpZih0aGlzLmN1cnZlTmFtZT09PW51bGwpe3Rocm93XCJ1bnN1cHBvcnRlZCBjdXJ2ZSBuYW1lXCJ9dGhpcy5zZXROYW1lZEN1cnZlKHRoaXMuY3VydmVOYW1lKTt0aGlzLnNldFB1YmxpY0tleUhleChvKX07dGhpcy5yZWFkQ2VydFB1YktleUhleD1mdW5jdGlvbihrLHApe2lmKHAhPT01KXtwPTZ9dmFyIG09QVNOMUhFWDt2YXIgbD1LSlVSLmNyeXB0by5FQ0RTQS5nZXROYW1lO3ZhciBvPW0uZ2V0VmJ5TGlzdDtpZihtLmlzQVNOMUhFWChrKT09PWZhbHNlKXt0aHJvd1wibm90IEFTTi4xIGhleCBzdHJpbmdcIn12YXIgaSxuO3RyeXtpPW8oaywwLFswLHAsMCwxXSxcIjA2XCIpO249byhrLDAsWzAscCwxXSxcIjAzXCIpLnN1YnN0cigyKX1jYXRjaChqKXt0aHJvd1wibWFsZm9ybWVkIFguNTA5IGNlcnRpZmljYXRlIEVDQyBwdWJsaWMga2V5XCJ9dGhpcy5jdXJ2ZU5hbWU9bChpKTtpZih0aGlzLmN1cnZlTmFtZT09PW51bGwpe3Rocm93XCJ1bnN1cHBvcnRlZCBjdXJ2ZSBuYW1lXCJ9dGhpcy5zZXROYW1lZEN1cnZlKHRoaXMuY3VydmVOYW1lKTt0aGlzLnNldFB1YmxpY0tleUhleChuKX07aWYoaCE9PXVuZGVmaW5lZCl7aWYoaC5jdXJ2ZSE9PXVuZGVmaW5lZCl7dGhpcy5jdXJ2ZU5hbWU9aC5jdXJ2ZX19aWYodGhpcy5jdXJ2ZU5hbWU9PT11bmRlZmluZWQpe3RoaXMuY3VydmVOYW1lPWV9dGhpcy5zZXROYW1lZEN1cnZlKHRoaXMuY3VydmVOYW1lKTtpZihoIT09dW5kZWZpbmVkKXtpZihoLnBydiE9PXVuZGVmaW5lZCl7dGhpcy5zZXRQcml2YXRlS2V5SGV4KGgucHJ2KX1pZihoLnB1YiE9PXVuZGVmaW5lZCl7dGhpcy5zZXRQdWJsaWNLZXlIZXgoaC5wdWIpfX19O0tKVVIuY3J5cHRvLkVDRFNBLnBhcnNlU2lnSGV4PWZ1bmN0aW9uKGEpe3ZhciBiPUtKVVIuY3J5cHRvLkVDRFNBLnBhcnNlU2lnSGV4SW5IZXhSUyhhKTt2YXIgZD1uZXcgQmlnSW50ZWdlcihiLnIsMTYpO3ZhciBjPW5ldyBCaWdJbnRlZ2VyKGIucywxNik7cmV0dXJue3I6ZCxzOmN9fTtLSlVSLmNyeXB0by5FQ0RTQS5wYXJzZVNpZ0hleEluSGV4UlM9ZnVuY3Rpb24oZil7dmFyIGo9QVNOMUhFWDt2YXIgaT1qLmdldENoaWxkSWR4O3ZhciBnPWouZ2V0VjtpZihmLnN1YnN0cigwLDIpIT1cIjMwXCIpe3Rocm93XCJzaWduYXR1cmUgaXMgbm90IGEgQVNOLjEgc2VxdWVuY2VcIn12YXIgaD1pKGYsMCk7aWYoaC5sZW5ndGghPTIpe3Rocm93XCJudW1iZXIgb2Ygc2lnbmF0dXJlIEFTTi4xIHNlcXVlbmNlIGVsZW1lbnRzIHNlZW0gd3JvbmdcIn12YXIgZT1oWzBdO3ZhciBkPWhbMV07aWYoZi5zdWJzdHIoZSwyKSE9XCIwMlwiKXt0aHJvd1wiMXN0IGl0ZW0gb2Ygc2VxdWVuZSBvZiBzaWduYXR1cmUgaXMgbm90IEFTTi4xIGludGVnZXJcIn1pZihmLnN1YnN0cihkLDIpIT1cIjAyXCIpe3Rocm93XCIybmQgaXRlbSBvZiBzZXF1ZW5lIG9mIHNpZ25hdHVyZSBpcyBub3QgQVNOLjEgaW50ZWdlclwifXZhciBjPWcoZixlKTt2YXIgYj1nKGYsZCk7cmV0dXJue3I6YyxzOmJ9fTtLSlVSLmNyeXB0by5FQ0RTQS5hc24xU2lnVG9Db25jYXRTaWc9ZnVuY3Rpb24oYyl7dmFyIGQ9S0pVUi5jcnlwdG8uRUNEU0EucGFyc2VTaWdIZXhJbkhleFJTKGMpO3ZhciBiPWQucjt2YXIgYT1kLnM7aWYoYi5zdWJzdHIoMCwyKT09XCIwMFwiJiYoYi5sZW5ndGglMzIpPT0yKXtiPWIuc3Vic3RyKDIpfWlmKGEuc3Vic3RyKDAsMik9PVwiMDBcIiYmKGEubGVuZ3RoJTMyKT09Mil7YT1hLnN1YnN0cigyKX1pZigoYi5sZW5ndGglMzIpPT0zMCl7Yj1cIjAwXCIrYn1pZigoYS5sZW5ndGglMzIpPT0zMCl7YT1cIjAwXCIrYX1pZihiLmxlbmd0aCUzMiE9MCl7dGhyb3dcInVua25vd24gRUNEU0Egc2lnIHIgbGVuZ3RoIGVycm9yXCJ9aWYoYS5sZW5ndGglMzIhPTApe3Rocm93XCJ1bmtub3duIEVDRFNBIHNpZyBzIGxlbmd0aCBlcnJvclwifXJldHVybiBiK2F9O0tKVVIuY3J5cHRvLkVDRFNBLmNvbmNhdFNpZ1RvQVNOMVNpZz1mdW5jdGlvbihhKXtpZigoKChhLmxlbmd0aC8yKSo4KSUoMTYqOCkpIT0wKXt0aHJvd1widW5rbm93biBFQ0RTQSBjb25jYXRpbmF0ZWQgci1zIHNpZyAgbGVuZ3RoIGVycm9yXCJ9dmFyIGM9YS5zdWJzdHIoMCxhLmxlbmd0aC8yKTt2YXIgYj1hLnN1YnN0cihhLmxlbmd0aC8yKTtyZXR1cm4gS0pVUi5jcnlwdG8uRUNEU0EuaGV4UlNTaWdUb0FTTjFTaWcoYyxiKX07S0pVUi5jcnlwdG8uRUNEU0EuaGV4UlNTaWdUb0FTTjFTaWc9ZnVuY3Rpb24oYixhKXt2YXIgZD1uZXcgQmlnSW50ZWdlcihiLDE2KTt2YXIgYz1uZXcgQmlnSW50ZWdlcihhLDE2KTtyZXR1cm4gS0pVUi5jcnlwdG8uRUNEU0EuYmlSU1NpZ1RvQVNOMVNpZyhkLGMpfTtLSlVSLmNyeXB0by5FQ0RTQS5iaVJTU2lnVG9BU04xU2lnPWZ1bmN0aW9uKGYsZCl7dmFyIGM9S0pVUi5hc24xO3ZhciBiPW5ldyBjLkRFUkludGVnZXIoe2JpZ2ludDpmfSk7dmFyIGE9bmV3IGMuREVSSW50ZWdlcih7YmlnaW50OmR9KTt2YXIgZT1uZXcgYy5ERVJTZXF1ZW5jZSh7YXJyYXk6W2IsYV19KTtyZXR1cm4gZS5nZXRFbmNvZGVkSGV4KCl9O0tKVVIuY3J5cHRvLkVDRFNBLmdldE5hbWU9ZnVuY3Rpb24oYSl7aWYoYT09PVwiMmE4NjQ4Y2UzZDAzMDEwN1wiKXtyZXR1cm5cInNlY3AyNTZyMVwifWlmKGE9PT1cIjJiODEwNDAwMGFcIil7cmV0dXJuXCJzZWNwMjU2azFcIn1pZihhPT09XCIyYjgxMDQwMDIyXCIpe3JldHVyblwic2VjcDM4NHIxXCJ9aWYoXCJ8c2VjcDI1NnIxfE5JU1QgUC0yNTZ8UC0yNTZ8cHJpbWUyNTZ2MXxcIi5pbmRleE9mKGEpIT09LTEpe3JldHVyblwic2VjcDI1NnIxXCJ9aWYoXCJ8c2VjcDI1NmsxfFwiLmluZGV4T2YoYSkhPT0tMSl7cmV0dXJuXCJzZWNwMjU2azFcIn1pZihcInxzZWNwMzg0cjF8TklTVCBQLTM4NHxQLTM4NHxcIi5pbmRleE9mKGEpIT09LTEpe3JldHVyblwic2VjcDM4NHIxXCJ9cmV0dXJuIG51bGx9O1xuaWYodHlwZW9mIEtKVVI9PVwidW5kZWZpbmVkXCJ8fCFLSlVSKXtLSlVSPXt9fWlmKHR5cGVvZiBLSlVSLmNyeXB0bz09XCJ1bmRlZmluZWRcInx8IUtKVVIuY3J5cHRvKXtLSlVSLmNyeXB0bz17fX1LSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCPW5ldyBmdW5jdGlvbigpe3ZhciBiPXt9O3ZhciBjPXt9O2Z1bmN0aW9uIGEoZCl7cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGQsMTYpfXRoaXMuZ2V0QnlOYW1lPWZ1bmN0aW9uKGUpe3ZhciBkPWU7aWYodHlwZW9mIGNbZF0hPVwidW5kZWZpbmVkXCIpe2Q9Y1tlXX1pZih0eXBlb2YgYltkXSE9XCJ1bmRlZmluZWRcIil7cmV0dXJuIGJbZF19dGhyb3dcInVucmVnaXN0ZXJlZCBFQyBjdXJ2ZSBuYW1lOiBcIitkfTt0aGlzLnJlZ2lzdD1mdW5jdGlvbihBLGwsbyxnLG0sZSxqLGYsayx1LGQseCl7YltBXT17fTt2YXIgcz1hKG8pO3ZhciB6PWEoZyk7dmFyIHk9YShtKTt2YXIgdD1hKGUpO3ZhciB3PWEoaik7dmFyIHI9bmV3IEVDQ3VydmVGcChzLHoseSk7dmFyIHE9ci5kZWNvZGVQb2ludEhleChcIjA0XCIrZitrKTtiW0FdW1wibmFtZVwiXT1BO2JbQV1bXCJrZXlsZW5cIl09bDtiW0FdW1wiY3VydmVcIl09cjtiW0FdW1wiR1wiXT1xO2JbQV1bXCJuXCJdPXQ7YltBXVtcImhcIl09dztiW0FdW1wib2lkXCJdPWQ7YltBXVtcImluZm9cIl09eDtmb3IodmFyIHY9MDt2PHUubGVuZ3RoO3YrKyl7Y1t1W3ZdXT1BfX19O0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDEyOHIxXCIsMTI4LFwiRkZGRkZGRkRGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZcIixcIkZGRkZGRkZERkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDXCIsXCJFODc1NzlDMTEwNzlGNDNERDgyNDk5M0MyQ0VFNUVEM1wiLFwiRkZGRkZGRkUwMDAwMDAwMDc1QTMwRDFCOTAzOEExMTVcIixcIjFcIixcIjE2MUZGNzUyOEI4OTlCMkQwQzI4NjA3Q0E1MkM1Qjg2XCIsXCJDRjVBQzgzOTVCQUZFQjEzQzAyREEyOTJEREVEN0E4M1wiLFtdLFwiXCIsXCJzZWNwMTI4cjEgOiBTRUNHIGN1cnZlIG92ZXIgYSAxMjggYml0IHByaW1lIGZpZWxkXCIpO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDE2MGsxXCIsMTYwLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGQUM3M1wiLFwiMFwiLFwiN1wiLFwiMDEwMDAwMDAwMDAwMDAwMDAwMDAwMUI4RkExNkRGQUI5QUNBMTZCNkIzXCIsXCIxXCIsXCIzQjRDMzgyQ0UzN0FBMTkyQTQwMTlFNzYzMDM2RjRGNURENEQ3RUJCXCIsXCI5MzhDRjkzNTMxOEZEQ0VENkJDMjgyODY1MzE3MzNDM0YwM0M0RkVFXCIsW10sXCJcIixcInNlY3AxNjBrMSA6IFNFQ0cgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGRcIik7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMTYwcjFcIiwxNjAsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjdGRkZGRkZGXCIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjdGRkZGRkZDXCIsXCIxQzk3QkVGQzU0QkQ3QThCNjVBQ0Y4OUY4MUQ0RDRBREM1NjVGQTQ1XCIsXCIwMTAwMDAwMDAwMDAwMDAwMDAwMDAxRjRDOEY5MjdBRUQzQ0E3NTIyNTdcIixcIjFcIixcIjRBOTZCNTY4OEVGNTczMjg0NjY0Njk4OTY4QzM4QkI5MTNDQkZDODJcIixcIjIzQTYyODU1MzE2ODk0N0Q1OURDQzkxMjA0MjM1MTM3N0FDNUZCMzJcIixbXSxcIlwiLFwic2VjcDE2MHIxIDogU0VDRyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZFwiKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AxOTJrMVwiLDE5MixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRUUzN1wiLFwiMFwiLFwiM1wiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFMjZGMkZDMTcwRjY5NDY2QTc0REVGRDhEXCIsXCIxXCIsXCJEQjRGRjEwRUMwNTdFOUFFMjZCMDdEMDI4MEI3RjQzNDFEQTVEMUIxRUFFMDZDN0RcIixcIjlCMkYyRjZEOUM1NjI4QTc4NDQxNjNEMDE1QkU4NjM0NDA4MkFBODhEOTVFMkY5RFwiLFtdKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AxOTJyMVwiLDE5MixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZGRkZGRlwiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRkZGRkZGRkZGRkZDXCIsXCI2NDIxMDUxOUU1OUM4MEU3MEZBN0U5QUI3MjI0MzA0OUZFQjhERUVDQzE0NkI5QjFcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjk5REVGODM2MTQ2QkM5QjFCNEQyMjgzMVwiLFwiMVwiLFwiMTg4REE4MEVCMDMwOTBGNjdDQkYyMEVCNDNBMTg4MDBGNEZGMEFGRDgyRkYxMDEyXCIsXCIwNzE5MkI5NUZGQzhEQTc4NjMxMDExRUQ2QjI0Q0RENTczRjk3N0ExMUU3OTQ4MTFcIixbXSk7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMjI0cjFcIiwyMjQsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMVwiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVcIixcIkI0MDUwQTg1MEMwNEIzQUJGNTQxMzI1NjUwNDRCMEI3RDdCRkQ4QkEyNzBCMzk0MzIzNTVGRkI0XCIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGMTZBMkUwQjhGMDNFMTNERDI5NDU1QzVDMkEzRFwiLFwiMVwiLFwiQjcwRTBDQkQ2QkI0QkY3RjMyMTM5MEI5NEEwM0MxRDM1NkMyMTEyMjM0MzI4MEQ2MTE1QzFEMjFcIixcIkJEMzc2Mzg4QjVGNzIzRkI0QzIyREZFNkNENDM3NUEwNUEwNzQ3NjQ0NEQ1ODE5OTg1MDA3RTM0XCIsW10pO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDI1NmsxXCIsMjU2LFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRkMyRlwiLFwiMFwiLFwiN1wiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVCQUFFRENFNkFGNDhBMDNCQkZEMjVFOENEMDM2NDE0MVwiLFwiMVwiLFwiNzlCRTY2N0VGOURDQkJBQzU1QTA2Mjk1Q0U4NzBCMDcwMjlCRkNEQjJEQ0UyOEQ5NTlGMjgxNUIxNkY4MTc5OFwiLFwiNDgzQURBNzcyNkEzQzQ2NTVEQTRGQkZDMEUxMTA4QThGRDE3QjQ0OEE2ODU1NDE5OUM0N0QwOEZGQjEwRDRCOFwiLFtdKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AyNTZyMVwiLDI1NixcIkZGRkZGRkZGMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZcIixcIkZGRkZGRkZGMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkNcIixcIjVBQzYzNUQ4QUEzQTkzRTdCM0VCQkQ1NTc2OTg4NkJDNjUxRDA2QjBDQzUzQjBGNjNCQ0UzQzNFMjdEMjYwNEJcIixcIkZGRkZGRkZGMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGQkNFNkZBQURBNzE3OUU4NEYzQjlDQUMyRkM2MzI1NTFcIixcIjFcIixcIjZCMTdEMUYyRTEyQzQyNDdGOEJDRTZFNTYzQTQ0MEYyNzcwMzdEODEyREVCMzNBMEY0QTEzOTQ1RDg5OEMyOTZcIixcIjRGRTM0MkUyRkUxQTdGOUI4RUU3RUI0QTdDMEY5RTE2MkJDRTMzNTc2QjMxNUVDRUNCQjY0MDY4MzdCRjUxRjVcIixbXCJOSVNUIFAtMjU2XCIsXCJQLTI1NlwiLFwicHJpbWUyNTZ2MVwiXSk7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMzg0cjFcIiwzODQsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGQ1wiLFwiQjMzMTJGQTdFMjNFRTdFNDk4OEUwNTZCRTNGODJEMTkxODFEOUM2RUZFODE0MTEyMDMxNDA4OEY1MDEzODc1QUM2NTYzOThEOEEyRUQxOUQyQTg1QzhFREQzRUMyQUVGXCIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDNzYzNEQ4MUY0MzcyRERGNTgxQTBEQjI0OEIwQTc3QUVDRUMxOTZBQ0NDNTI5NzNcIixcIjFcIixcIkFBODdDQTIyQkU4QjA1Mzc4RUIxQzcxRUYzMjBBRDc0NkUxRDNCNjI4QkE3OUI5ODU5Rjc0MUUwODI1NDJBMzg1NTAyRjI1REJGNTUyOTZDM0E1NDVFMzg3Mjc2MEFCN1wiLFwiMzYxN2RlNGE5NjI2MmM2ZjVkOWU5OGJmOTI5MmRjMjlmOGY0MWRiZDI4OWExNDdjZTlkYTMxMTNiNWYwYjhjMDBhNjBiMWNlMWQ3ZTgxOWQ3YTQzMWQ3YzkwZWEwZTVmXCIsW1wiTklTVCBQLTM4NFwiLFwiUC0zODRcIl0pO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDUyMXIxXCIsNTIxLFwiMUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZcIixcIjFGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDXCIsXCIwNTE5NTNFQjk2MThFMUM5QTFGOTI5QTIxQTBCNjg1NDBFRUEyREE3MjVCOTlCMzE1RjNCOEI0ODk5MThFRjEwOUUxNTYxOTM5NTFFQzdFOTM3QjE2NTJDMEJEM0JCMUJGMDczNTczREY4ODNEMkMzNEYxRUY0NTFGRDQ2QjUwM0YwMFwiLFwiMUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQTUxODY4NzgzQkYyRjk2NkI3RkNDMDE0OEY3MDlBNUQwM0JCNUM5Qjg4OTlDNDdBRUJCNkZCNzFFOTEzODY0MDlcIixcIjFcIixcIkM2ODU4RTA2QjcwNDA0RTlDRDlFM0VDQjY2MjM5NUI0NDI5QzY0ODEzOTA1M0ZCNTIxRjgyOEFGNjA2QjREM0RCQUExNEI1RTc3RUZFNzU5MjhGRTFEQzEyN0EyRkZBOERFMzM0OEIzQzE4NTZBNDI5QkY5N0U3RTMxQzJFNUJENjZcIixcIjAxMTgzOTI5NmE3ODlhM2JjMDA0NWM4YTVmYjQyYzdkMWJkOTk4ZjU0NDQ5NTc5YjQ0NjgxN2FmYmQxNzI3M2U2NjJjOTdlZTcyOTk1ZWY0MjY0MGM1NTBiOTAxM2ZhZDA3NjEzNTNjNzA4NmEyNzJjMjQwODhiZTk0NzY5ZmQxNjY1MFwiLFtcIk5JU1QgUC01MjFcIixcIlAtNTIxXCJdKTtcbnZhciBLRVlVVElMPWZ1bmN0aW9uKCl7dmFyIGQ9ZnVuY3Rpb24ocCxyLHEpe3JldHVybiBrKENyeXB0b0pTLkFFUyxwLHIscSl9O3ZhciBlPWZ1bmN0aW9uKHAscixxKXtyZXR1cm4gayhDcnlwdG9KUy5UcmlwbGVERVMscCxyLHEpfTt2YXIgYT1mdW5jdGlvbihwLHIscSl7cmV0dXJuIGsoQ3J5cHRvSlMuREVTLHAscixxKX07dmFyIGs9ZnVuY3Rpb24ocyx4LHUscSl7dmFyIHI9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh4KTt2YXIgdz1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHUpO3ZhciBwPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UocSk7dmFyIHQ9e307dC5rZXk9dzt0Lml2PXA7dC5jaXBoZXJ0ZXh0PXI7dmFyIHY9cy5kZWNyeXB0KHQsdyx7aXY6cH0pO3JldHVybiBDcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeSh2KX07dmFyIGw9ZnVuY3Rpb24ocCxyLHEpe3JldHVybiBnKENyeXB0b0pTLkFFUyxwLHIscSl9O3ZhciBvPWZ1bmN0aW9uKHAscixxKXtyZXR1cm4gZyhDcnlwdG9KUy5UcmlwbGVERVMscCxyLHEpfTt2YXIgZj1mdW5jdGlvbihwLHIscSl7cmV0dXJuIGcoQ3J5cHRvSlMuREVTLHAscixxKX07dmFyIGc9ZnVuY3Rpb24odCx5LHYscSl7dmFyIHM9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh5KTt2YXIgeD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHYpO3ZhciBwPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UocSk7dmFyIHc9dC5lbmNyeXB0KHMseCx7aXY6cH0pO3ZhciByPUNyeXB0b0pTLmVuYy5IZXgucGFyc2Uody50b1N0cmluZygpKTt2YXIgdT1DcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShyKTtyZXR1cm4gdX07dmFyIGk9e1wiQUVTLTI1Ni1DQkNcIjp7cHJvYzpkLGVwcm9jOmwsa2V5bGVuOjMyLGl2bGVuOjE2fSxcIkFFUy0xOTItQ0JDXCI6e3Byb2M6ZCxlcHJvYzpsLGtleWxlbjoyNCxpdmxlbjoxNn0sXCJBRVMtMTI4LUNCQ1wiOntwcm9jOmQsZXByb2M6bCxrZXlsZW46MTYsaXZsZW46MTZ9LFwiREVTLUVERTMtQ0JDXCI6e3Byb2M6ZSxlcHJvYzpvLGtleWxlbjoyNCxpdmxlbjo4fSxcIkRFUy1DQkNcIjp7cHJvYzphLGVwcm9jOmYsa2V5bGVuOjgsaXZsZW46OH19O3ZhciBjPWZ1bmN0aW9uKHApe3JldHVybiBpW3BdW1wicHJvY1wiXX07dmFyIG09ZnVuY3Rpb24ocCl7dmFyIHI9Q3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20ocCk7dmFyIHE9Q3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkocik7cmV0dXJuIHF9O3ZhciBuPWZ1bmN0aW9uKHYpe3ZhciB3PXt9O3ZhciBxPXYubWF0Y2gobmV3IFJlZ0V4cChcIkRFSy1JbmZvOiAoW14sXSspLChbMC05QS1GYS1mXSspXCIsXCJtXCIpKTtpZihxKXt3LmNpcGhlcj1xWzFdO3cuaXZzYWx0PXFbMl19dmFyIHA9di5tYXRjaChuZXcgUmVnRXhwKFwiLS0tLS1CRUdJTiAoW0EtWl0rKSBQUklWQVRFIEtFWS0tLS0tXCIpKTtpZihwKXt3LnR5cGU9cFsxXX12YXIgdT0tMTt2YXIgeD0wO2lmKHYuaW5kZXhPZihcIlxcclxcblxcclxcblwiKSE9LTEpe3U9di5pbmRleE9mKFwiXFxyXFxuXFxyXFxuXCIpO3g9Mn1pZih2LmluZGV4T2YoXCJcXG5cXG5cIikhPS0xKXt1PXYuaW5kZXhPZihcIlxcblxcblwiKTt4PTF9dmFyIHQ9di5pbmRleE9mKFwiLS0tLS1FTkRcIik7aWYodSE9LTEmJnQhPS0xKXt2YXIgcj12LnN1YnN0cmluZyh1K3gqMix0LXgpO3I9ci5yZXBsYWNlKC9cXHMrL2csXCJcIik7dy5kYXRhPXJ9cmV0dXJuIHd9O3ZhciBqPWZ1bmN0aW9uKHEseSxwKXt2YXIgdj1wLnN1YnN0cmluZygwLDE2KTt2YXIgdD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHYpO3ZhciByPUNyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHkpO3ZhciB1PWlbcV1bXCJrZXlsZW5cIl0raVtxXVtcIml2bGVuXCJdO3ZhciB4PVwiXCI7dmFyIHc9bnVsbDtmb3IoOzspe3ZhciBzPUNyeXB0b0pTLmFsZ28uTUQ1LmNyZWF0ZSgpO2lmKHchPW51bGwpe3MudXBkYXRlKHcpfXMudXBkYXRlKHIpO3MudXBkYXRlKHQpO3c9cy5maW5hbGl6ZSgpO3g9eCtDcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeSh3KTtpZih4Lmxlbmd0aD49dSoyKXticmVha319dmFyIHo9e307ei5rZXloZXg9eC5zdWJzdHIoMCxpW3FdW1wia2V5bGVuXCJdKjIpO3ouaXZoZXg9eC5zdWJzdHIoaVtxXVtcImtleWxlblwiXSoyLGlbcV1bXCJpdmxlblwiXSoyKTtyZXR1cm4gen07dmFyIGI9ZnVuY3Rpb24ocCx2LHIsdyl7dmFyIHM9Q3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShwKTt2YXIgcT1DcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeShzKTt2YXIgdT1pW3ZdW1wicHJvY1wiXTt2YXIgdD11KHEscix3KTtyZXR1cm4gdH07dmFyIGg9ZnVuY3Rpb24ocCxzLHEsdSl7dmFyIHI9aVtzXVtcImVwcm9jXCJdO3ZhciB0PXIocCxxLHUpO3JldHVybiB0fTtyZXR1cm57dmVyc2lvbjpcIjEuMC4wXCIscGFyc2VQS0NTNVBFTTpmdW5jdGlvbihwKXtyZXR1cm4gbihwKX0sZ2V0S2V5QW5kVW51c2VkSXZCeVBhc3Njb2RlQW5kSXZzYWx0OmZ1bmN0aW9uKHEscCxyKXtyZXR1cm4gaihxLHAscil9LGRlY3J5cHRLZXlCNjQ6ZnVuY3Rpb24ocCxyLHEscyl7cmV0dXJuIGIocCxyLHEscyl9LGdldERlY3J5cHRlZEtleUhleDpmdW5jdGlvbih5LHgpe3ZhciBxPW4oeSk7dmFyIHQ9cS50eXBlO3ZhciByPXEuY2lwaGVyO3ZhciBwPXEuaXZzYWx0O3ZhciBzPXEuZGF0YTt2YXIgdz1qKHIseCxwKTt2YXIgdj13LmtleWhleDt2YXIgdT1iKHMscix2LHApO3JldHVybiB1fSxnZXRFbmNyeXB0ZWRQS0NTNVBFTUZyb21QcnZLZXlIZXg6ZnVuY3Rpb24oeCxzLEEsdCxyKXt2YXIgcD1cIlwiO2lmKHR5cGVvZiB0PT1cInVuZGVmaW5lZFwifHx0PT1udWxsKXt0PVwiQUVTLTI1Ni1DQkNcIn1pZih0eXBlb2YgaVt0XT09XCJ1bmRlZmluZWRcIil7dGhyb3dcIktFWVVUSUwgdW5zdXBwb3J0ZWQgYWxnb3JpdGhtOiBcIit0fWlmKHR5cGVvZiByPT1cInVuZGVmaW5lZFwifHxyPT1udWxsKXt2YXIgdj1pW3RdW1wiaXZsZW5cIl07dmFyIHU9bSh2KTtyPXUudG9VcHBlckNhc2UoKX12YXIgej1qKHQsQSxyKTt2YXIgeT16LmtleWhleDt2YXIgdz1oKHMsdCx5LHIpO3ZhciBxPXcucmVwbGFjZSgvKC57NjR9KS9nLFwiJDFcXHJcXG5cIik7dmFyIHA9XCItLS0tLUJFR0lOIFwiK3grXCIgUFJJVkFURSBLRVktLS0tLVxcclxcblwiO3ArPVwiUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFxcclxcblwiO3ArPVwiREVLLUluZm86IFwiK3QrXCIsXCIrcitcIlxcclxcblwiO3ArPVwiXFxyXFxuXCI7cCs9cTtwKz1cIlxcclxcbi0tLS0tRU5EIFwiK3grXCIgUFJJVkFURSBLRVktLS0tLVxcclxcblwiO3JldHVybiBwfSxwYXJzZUhleE9mRW5jcnlwdGVkUEtDUzg6ZnVuY3Rpb24oeSl7dmFyIEI9QVNOMUhFWDt2YXIgej1CLmdldENoaWxkSWR4O3ZhciB3PUIuZ2V0Vjt2YXIgdD17fTt2YXIgcj16KHksMCk7aWYoci5sZW5ndGghPTIpe3Rocm93XCJtYWxmb3JtZWQgZm9ybWF0OiBTRVFVRU5DRSgwKS5pdGVtcyAhPSAyOiBcIityLmxlbmd0aH10LmNpcGhlcnRleHQ9dyh5LHJbMV0pO3ZhciBBPXooeSxyWzBdKTtpZihBLmxlbmd0aCE9Mil7dGhyb3dcIm1hbGZvcm1lZCBmb3JtYXQ6IFNFUVVFTkNFKDAuMCkuaXRlbXMgIT0gMjogXCIrQS5sZW5ndGh9aWYodyh5LEFbMF0pIT1cIjJhODY0ODg2ZjcwZDAxMDUwZFwiKXt0aHJvd1widGhpcyBvbmx5IHN1cHBvcnRzIHBrY3M1UEJFUzJcIn12YXIgcD16KHksQVsxXSk7aWYoQS5sZW5ndGghPTIpe3Rocm93XCJtYWxmb3JtZWQgZm9ybWF0OiBTRVFVRU5DRSgwLjAuMSkuaXRlbXMgIT0gMjogXCIrcC5sZW5ndGh9dmFyIHE9eih5LHBbMV0pO2lmKHEubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdDogU0VRVUVOQ0UoMC4wLjEuMSkuaXRlbXMgIT0gMjogXCIrcS5sZW5ndGh9aWYodyh5LHFbMF0pIT1cIjJhODY0ODg2ZjcwZDAzMDdcIil7dGhyb3dcInRoaXMgb25seSBzdXBwb3J0cyBUcmlwbGVERVNcIn10LmVuY3J5cHRpb25TY2hlbWVBbGc9XCJUcmlwbGVERVNcIjt0LmVuY3J5cHRpb25TY2hlbWVJVj13KHkscVsxXSk7dmFyIHM9eih5LHBbMF0pO2lmKHMubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdDogU0VRVUVOQ0UoMC4wLjEuMCkuaXRlbXMgIT0gMjogXCIrcy5sZW5ndGh9aWYodyh5LHNbMF0pIT1cIjJhODY0ODg2ZjcwZDAxMDUwY1wiKXt0aHJvd1widGhpcyBvbmx5IHN1cHBvcnRzIHBrY3M1UEJLREYyXCJ9dmFyIHg9eih5LHNbMV0pO2lmKHgubGVuZ3RoPDIpe3Rocm93XCJtYWxmb3JtZWQgZm9ybWF0OiBTRVFVRU5DRSgwLjAuMS4wLjEpLml0ZW1zIDwgMjogXCIreC5sZW5ndGh9dC5wYmtkZjJTYWx0PXcoeSx4WzBdKTt2YXIgdT13KHkseFsxXSk7dHJ5e3QucGJrZGYySXRlcj1wYXJzZUludCh1LDE2KX1jYXRjaCh2KXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdCBwYmtkZjJJdGVyOiBcIit1fXJldHVybiB0fSxnZXRQQktERjJLZXlIZXhGcm9tUGFyYW06ZnVuY3Rpb24odSxwKXt2YXIgdD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHUucGJrZGYyU2FsdCk7dmFyIHE9dS5wYmtkZjJJdGVyO3ZhciBzPUNyeXB0b0pTLlBCS0RGMihwLHQse2tleVNpemU6MTkyLzMyLGl0ZXJhdGlvbnM6cX0pO3ZhciByPUNyeXB0b0pTLmVuYy5IZXguc3RyaW5naWZ5KHMpO3JldHVybiByfSxfZ2V0UGxhaW5QS0NTOEhleEZyb21FbmNyeXB0ZWRQS0NTOFBFTTpmdW5jdGlvbih4LHkpe3ZhciByPXBlbXRvaGV4KHgsXCJFTkNSWVBURUQgUFJJVkFURSBLRVlcIik7dmFyIHA9dGhpcy5wYXJzZUhleE9mRW5jcnlwdGVkUEtDUzgocik7dmFyIHU9S0VZVVRJTC5nZXRQQktERjJLZXlIZXhGcm9tUGFyYW0ocCx5KTt2YXIgdj17fTt2LmNpcGhlcnRleHQ9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZShwLmNpcGhlcnRleHQpO3ZhciB0PUNyeXB0b0pTLmVuYy5IZXgucGFyc2UodSk7dmFyIHM9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZShwLmVuY3J5cHRpb25TY2hlbWVJVik7dmFyIHc9Q3J5cHRvSlMuVHJpcGxlREVTLmRlY3J5cHQodix0LHtpdjpzfSk7dmFyIHE9Q3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkodyk7cmV0dXJuIHF9LGdldEtleUZyb21FbmNyeXB0ZWRQS0NTOFBFTTpmdW5jdGlvbihzLHEpe3ZhciBwPXRoaXMuX2dldFBsYWluUEtDUzhIZXhGcm9tRW5jcnlwdGVkUEtDUzhQRU0ocyxxKTt2YXIgcj10aGlzLmdldEtleUZyb21QbGFpblByaXZhdGVQS0NTOEhleChwKTtyZXR1cm4gcn0scGFyc2VQbGFpblByaXZhdGVQS0NTOEhleDpmdW5jdGlvbihzKXt2YXIgdj1BU04xSEVYO3ZhciB1PXYuZ2V0Q2hpbGRJZHg7dmFyIHQ9di5nZXRWO3ZhciBxPXt9O3EuYWxncGFyYW09bnVsbDtpZihzLnN1YnN0cigwLDIpIT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgcGxhaW4gUEtDUzggcHJpdmF0ZSBrZXkoY29kZTowMDEpXCJ9dmFyIHI9dShzLDApO2lmKHIubGVuZ3RoIT0zKXt0aHJvd1wibWFsZm9ybWVkIHBsYWluIFBLQ1M4IHByaXZhdGUga2V5KGNvZGU6MDAyKVwifWlmKHMuc3Vic3RyKHJbMV0sMikhPVwiMzBcIil7dGhyb3dcIm1hbGZvcm1lZCBQS0NTOCBwcml2YXRlIGtleShjb2RlOjAwMylcIn12YXIgcD11KHMsclsxXSk7aWYocC5sZW5ndGghPTIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHJpdmF0ZSBrZXkoY29kZTowMDQpXCJ9aWYocy5zdWJzdHIocFswXSwyKSE9XCIwNlwiKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHByaXZhdGUga2V5KGNvZGU6MDA1KVwifXEuYWxnb2lkPXQocyxwWzBdKTtpZihzLnN1YnN0cihwWzFdLDIpPT1cIjA2XCIpe3EuYWxncGFyYW09dChzLHBbMV0pfWlmKHMuc3Vic3RyKHJbMl0sMikhPVwiMDRcIil7dGhyb3dcIm1hbGZvcm1lZCBQS0NTOCBwcml2YXRlIGtleShjb2RlOjAwNilcIn1xLmtleWlkeD12LmdldFZpZHgocyxyWzJdKTtyZXR1cm4gcX0sZ2V0S2V5RnJvbVBsYWluUHJpdmF0ZVBLQ1M4UEVNOmZ1bmN0aW9uKHEpe3ZhciBwPXBlbXRvaGV4KHEsXCJQUklWQVRFIEtFWVwiKTt2YXIgcj10aGlzLmdldEtleUZyb21QbGFpblByaXZhdGVQS0NTOEhleChwKTtyZXR1cm4gcn0sZ2V0S2V5RnJvbVBsYWluUHJpdmF0ZVBLQ1M4SGV4OmZ1bmN0aW9uKHApe3ZhciBxPXRoaXMucGFyc2VQbGFpblByaXZhdGVQS0NTOEhleChwKTt2YXIgcjtpZihxLmFsZ29pZD09XCIyYTg2NDg4NmY3MGQwMTAxMDFcIil7cj1uZXcgUlNBS2V5KCl9ZWxzZXtpZihxLmFsZ29pZD09XCIyYTg2NDhjZTM4MDQwMVwiKXtyPW5ldyBLSlVSLmNyeXB0by5EU0EoKX1lbHNle2lmKHEuYWxnb2lkPT1cIjJhODY0OGNlM2QwMjAxXCIpe3I9bmV3IEtKVVIuY3J5cHRvLkVDRFNBKCl9ZWxzZXt0aHJvd1widW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXkgYWxnb3JpdGhtXCJ9fX1yLnJlYWRQS0NTOFBydktleUhleChwKTtyZXR1cm4gcn0sX2dldEtleUZyb21QdWJsaWNQS0NTOEhleDpmdW5jdGlvbihxKXt2YXIgcDt2YXIgcj1BU04xSEVYLmdldFZieUxpc3QocSwwLFswLDBdLFwiMDZcIik7aWYocj09PVwiMmE4NjQ4ODZmNzBkMDEwMTAxXCIpe3A9bmV3IFJTQUtleSgpfWVsc2V7aWYocj09PVwiMmE4NjQ4Y2UzODA0MDFcIil7cD1uZXcgS0pVUi5jcnlwdG8uRFNBKCl9ZWxzZXtpZihyPT09XCIyYTg2NDhjZTNkMDIwMVwiKXtwPW5ldyBLSlVSLmNyeXB0by5FQ0RTQSgpfWVsc2V7dGhyb3dcInVuc3VwcG9ydGVkIFBLQ1MjOCBwdWJsaWMga2V5IGhleFwifX19cC5yZWFkUEtDUzhQdWJLZXlIZXgocSk7cmV0dXJuIHB9LHBhcnNlUHVibGljUmF3UlNBS2V5SGV4OmZ1bmN0aW9uKHIpe3ZhciB1PUFTTjFIRVg7dmFyIHQ9dS5nZXRDaGlsZElkeDt2YXIgcz11LmdldFY7dmFyIHA9e307aWYoci5zdWJzdHIoMCwyKSE9XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIFJTQSBrZXkoY29kZTowMDEpXCJ9dmFyIHE9dChyLDApO2lmKHEubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIFJTQSBrZXkoY29kZTowMDIpXCJ9aWYoci5zdWJzdHIocVswXSwyKSE9XCIwMlwiKXt0aHJvd1wibWFsZm9ybWVkIFJTQSBrZXkoY29kZTowMDMpXCJ9cC5uPXMocixxWzBdKTtpZihyLnN1YnN0cihxWzFdLDIpIT1cIjAyXCIpe3Rocm93XCJtYWxmb3JtZWQgUlNBIGtleShjb2RlOjAwNClcIn1wLmU9cyhyLHFbMV0pO3JldHVybiBwfSxwYXJzZVB1YmxpY1BLQ1M4SGV4OmZ1bmN0aW9uKHQpe3ZhciB2PUFTTjFIRVg7dmFyIHU9di5nZXRDaGlsZElkeDt2YXIgcz12LmdldFY7dmFyIHE9e307cS5hbGdwYXJhbT1udWxsO3ZhciByPXUodCwwKTtpZihyLmxlbmd0aCE9Mil7dGhyb3dcIm91dGVyIERFUlNlcXVlbmNlIHNoYWxsIGhhdmUgMiBlbGVtZW50czogXCIrci5sZW5ndGh9dmFyIHc9clswXTtpZih0LnN1YnN0cih3LDIpIT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHVibGljIGtleShjb2RlOjAwMSlcIn12YXIgcD11KHQsdyk7aWYocC5sZW5ndGghPTIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHVibGljIGtleShjb2RlOjAwMilcIn1pZih0LnN1YnN0cihwWzBdLDIpIT1cIjA2XCIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHVibGljIGtleShjb2RlOjAwMylcIn1xLmFsZ29pZD1zKHQscFswXSk7aWYodC5zdWJzdHIocFsxXSwyKT09XCIwNlwiKXtxLmFsZ3BhcmFtPXModCxwWzFdKX1lbHNle2lmKHQuc3Vic3RyKHBbMV0sMik9PVwiMzBcIil7cS5hbGdwYXJhbT17fTtxLmFsZ3BhcmFtLnA9di5nZXRWYnlMaXN0KHQscFsxXSxbMF0sXCIwMlwiKTtxLmFsZ3BhcmFtLnE9di5nZXRWYnlMaXN0KHQscFsxXSxbMV0sXCIwMlwiKTtxLmFsZ3BhcmFtLmc9di5nZXRWYnlMaXN0KHQscFsxXSxbMl0sXCIwMlwiKX19aWYodC5zdWJzdHIoclsxXSwyKSE9XCIwM1wiKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHB1YmxpYyBrZXkoY29kZTowMDQpXCJ9cS5rZXk9cyh0LHJbMV0pLnN1YnN0cigyKTtyZXR1cm4gcX0sfX0oKTtLRVlVVElMLmdldEtleT1mdW5jdGlvbihsLGssbil7dmFyIEc9QVNOMUhFWCxMPUcuZ2V0Q2hpbGRJZHgsdj1HLmdldFYsZD1HLmdldFZieUxpc3QsYz1LSlVSLmNyeXB0byxpPWMuRUNEU0EsQz1jLkRTQSx3PVJTQUtleSxNPXBlbXRvaGV4LEY9S0VZVVRJTDtpZih0eXBlb2YgdyE9XCJ1bmRlZmluZWRcIiYmbCBpbnN0YW5jZW9mIHcpe3JldHVybiBsfWlmKHR5cGVvZiBpIT1cInVuZGVmaW5lZFwiJiZsIGluc3RhbmNlb2YgaSl7cmV0dXJuIGx9aWYodHlwZW9mIEMhPVwidW5kZWZpbmVkXCImJmwgaW5zdGFuY2VvZiBDKXtyZXR1cm4gbH1pZihsLmN1cnZlIT09dW5kZWZpbmVkJiZsLnh5IT09dW5kZWZpbmVkJiZsLmQ9PT11bmRlZmluZWQpe3JldHVybiBuZXcgaSh7cHViOmwueHksY3VydmU6bC5jdXJ2ZX0pfWlmKGwuY3VydmUhPT11bmRlZmluZWQmJmwuZCE9PXVuZGVmaW5lZCl7cmV0dXJuIG5ldyBpKHtwcnY6bC5kLGN1cnZlOmwuY3VydmV9KX1pZihsLmt0eT09PXVuZGVmaW5lZCYmbC5uIT09dW5kZWZpbmVkJiZsLmUhPT11bmRlZmluZWQmJmwuZD09PXVuZGVmaW5lZCl7dmFyIFA9bmV3IHcoKTtQLnNldFB1YmxpYyhsLm4sbC5lKTtyZXR1cm4gUH1pZihsLmt0eT09PXVuZGVmaW5lZCYmbC5uIT09dW5kZWZpbmVkJiZsLmUhPT11bmRlZmluZWQmJmwuZCE9PXVuZGVmaW5lZCYmbC5wIT09dW5kZWZpbmVkJiZsLnEhPT11bmRlZmluZWQmJmwuZHAhPT11bmRlZmluZWQmJmwuZHEhPT11bmRlZmluZWQmJmwuY28hPT11bmRlZmluZWQmJmwucWk9PT11bmRlZmluZWQpe3ZhciBQPW5ldyB3KCk7UC5zZXRQcml2YXRlRXgobC5uLGwuZSxsLmQsbC5wLGwucSxsLmRwLGwuZHEsbC5jbyk7cmV0dXJuIFB9aWYobC5rdHk9PT11bmRlZmluZWQmJmwubiE9PXVuZGVmaW5lZCYmbC5lIT09dW5kZWZpbmVkJiZsLmQhPT11bmRlZmluZWQmJmwucD09PXVuZGVmaW5lZCl7dmFyIFA9bmV3IHcoKTtQLnNldFByaXZhdGUobC5uLGwuZSxsLmQpO3JldHVybiBQfWlmKGwucCE9PXVuZGVmaW5lZCYmbC5xIT09dW5kZWZpbmVkJiZsLmchPT11bmRlZmluZWQmJmwueSE9PXVuZGVmaW5lZCYmbC54PT09dW5kZWZpbmVkKXt2YXIgUD1uZXcgQygpO1Auc2V0UHVibGljKGwucCxsLnEsbC5nLGwueSk7cmV0dXJuIFB9aWYobC5wIT09dW5kZWZpbmVkJiZsLnEhPT11bmRlZmluZWQmJmwuZyE9PXVuZGVmaW5lZCYmbC55IT09dW5kZWZpbmVkJiZsLnghPT11bmRlZmluZWQpe3ZhciBQPW5ldyBDKCk7UC5zZXRQcml2YXRlKGwucCxsLnEsbC5nLGwueSxsLngpO3JldHVybiBQfWlmKGwua3R5PT09XCJSU0FcIiYmbC5uIT09dW5kZWZpbmVkJiZsLmUhPT11bmRlZmluZWQmJmwuZD09PXVuZGVmaW5lZCl7dmFyIFA9bmV3IHcoKTtQLnNldFB1YmxpYyhiNjR1dG9oZXgobC5uKSxiNjR1dG9oZXgobC5lKSk7cmV0dXJuIFB9aWYobC5rdHk9PT1cIlJTQVwiJiZsLm4hPT11bmRlZmluZWQmJmwuZSE9PXVuZGVmaW5lZCYmbC5kIT09dW5kZWZpbmVkJiZsLnAhPT11bmRlZmluZWQmJmwucSE9PXVuZGVmaW5lZCYmbC5kcCE9PXVuZGVmaW5lZCYmbC5kcSE9PXVuZGVmaW5lZCYmbC5xaSE9PXVuZGVmaW5lZCl7dmFyIFA9bmV3IHcoKTtQLnNldFByaXZhdGVFeChiNjR1dG9oZXgobC5uKSxiNjR1dG9oZXgobC5lKSxiNjR1dG9oZXgobC5kKSxiNjR1dG9oZXgobC5wKSxiNjR1dG9oZXgobC5xKSxiNjR1dG9oZXgobC5kcCksYjY0dXRvaGV4KGwuZHEpLGI2NHV0b2hleChsLnFpKSk7cmV0dXJuIFB9aWYobC5rdHk9PT1cIlJTQVwiJiZsLm4hPT11bmRlZmluZWQmJmwuZSE9PXVuZGVmaW5lZCYmbC5kIT09dW5kZWZpbmVkKXt2YXIgUD1uZXcgdygpO1Auc2V0UHJpdmF0ZShiNjR1dG9oZXgobC5uKSxiNjR1dG9oZXgobC5lKSxiNjR1dG9oZXgobC5kKSk7cmV0dXJuIFB9aWYobC5rdHk9PT1cIkVDXCImJmwuY3J2IT09dW5kZWZpbmVkJiZsLnghPT11bmRlZmluZWQmJmwueSE9PXVuZGVmaW5lZCYmbC5kPT09dW5kZWZpbmVkKXt2YXIgaj1uZXcgaSh7Y3VydmU6bC5jcnZ9KTt2YXIgdD1qLmVjcGFyYW1zLmtleWxlbi80O3ZhciBCPShcIjAwMDAwMDAwMDBcIitiNjR1dG9oZXgobC54KSkuc2xpY2UoLXQpO3ZhciB6PShcIjAwMDAwMDAwMDBcIitiNjR1dG9oZXgobC55KSkuc2xpY2UoLXQpO3ZhciB1PVwiMDRcIitCK3o7ai5zZXRQdWJsaWNLZXlIZXgodSk7cmV0dXJuIGp9aWYobC5rdHk9PT1cIkVDXCImJmwuY3J2IT09dW5kZWZpbmVkJiZsLnghPT11bmRlZmluZWQmJmwueSE9PXVuZGVmaW5lZCYmbC5kIT09dW5kZWZpbmVkKXt2YXIgaj1uZXcgaSh7Y3VydmU6bC5jcnZ9KTt2YXIgdD1qLmVjcGFyYW1zLmtleWxlbi80O3ZhciBCPShcIjAwMDAwMDAwMDBcIitiNjR1dG9oZXgobC54KSkuc2xpY2UoLXQpO3ZhciB6PShcIjAwMDAwMDAwMDBcIitiNjR1dG9oZXgobC55KSkuc2xpY2UoLXQpO3ZhciB1PVwiMDRcIitCK3o7dmFyIGI9KFwiMDAwMDAwMDAwMFwiK2I2NHV0b2hleChsLmQpKS5zbGljZSgtdCk7ai5zZXRQdWJsaWNLZXlIZXgodSk7ai5zZXRQcml2YXRlS2V5SGV4KGIpO3JldHVybiBqfWlmKG49PT1cInBrY3M1cHJ2XCIpe3ZhciBKPWwsRz1BU04xSEVYLE4sUDtOPUwoSiwwKTtpZihOLmxlbmd0aD09PTkpe1A9bmV3IHcoKTtQLnJlYWRQS0NTNVBydktleUhleChKKX1lbHNle2lmKE4ubGVuZ3RoPT09Nil7UD1uZXcgQygpO1AucmVhZFBLQ1M1UHJ2S2V5SGV4KEopfWVsc2V7aWYoTi5sZW5ndGg+MiYmSi5zdWJzdHIoTlsxXSwyKT09PVwiMDRcIil7UD1uZXcgaSgpO1AucmVhZFBLQ1M1UHJ2S2V5SGV4KEopfWVsc2V7dGhyb3dcInVuc3VwcG9ydGVkIFBLQ1MjMS81IGhleGFkZWNpbWFsIGtleVwifX19cmV0dXJuIFB9aWYobj09PVwicGtjczhwcnZcIil7dmFyIFA9Ri5nZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhIZXgobCk7cmV0dXJuIFB9aWYobj09PVwicGtjczhwdWJcIil7cmV0dXJuIEYuX2dldEtleUZyb21QdWJsaWNQS0NTOEhleChsKX1pZihuPT09XCJ4NTA5cHViXCIpe3JldHVybiBYNTA5LmdldFB1YmxpY0tleUZyb21DZXJ0SGV4KGwpfWlmKGwuaW5kZXhPZihcIi1FTkQgQ0VSVElGSUNBVEUtXCIsMCkhPS0xfHxsLmluZGV4T2YoXCItRU5EIFg1MDkgQ0VSVElGSUNBVEUtXCIsMCkhPS0xfHxsLmluZGV4T2YoXCItRU5EIFRSVVNURUQgQ0VSVElGSUNBVEUtXCIsMCkhPS0xKXtyZXR1cm4gWDUwOS5nZXRQdWJsaWNLZXlGcm9tQ2VydFBFTShsKX1pZihsLmluZGV4T2YoXCItRU5EIFBVQkxJQyBLRVktXCIpIT0tMSl7dmFyIE89cGVtdG9oZXgobCxcIlBVQkxJQyBLRVlcIik7cmV0dXJuIEYuX2dldEtleUZyb21QdWJsaWNQS0NTOEhleChPKX1pZihsLmluZGV4T2YoXCItRU5EIFJTQSBQUklWQVRFIEtFWS1cIikhPS0xJiZsLmluZGV4T2YoXCI0LEVOQ1JZUFRFRFwiKT09LTEpe3ZhciBtPU0obCxcIlJTQSBQUklWQVRFIEtFWVwiKTtyZXR1cm4gRi5nZXRLZXkobSxudWxsLFwicGtjczVwcnZcIil9aWYobC5pbmRleE9mKFwiLUVORCBEU0EgUFJJVkFURSBLRVktXCIpIT0tMSYmbC5pbmRleE9mKFwiNCxFTkNSWVBURURcIik9PS0xKXt2YXIgST1NKGwsXCJEU0EgUFJJVkFURSBLRVlcIik7dmFyIEU9ZChJLDAsWzFdLFwiMDJcIik7dmFyIEQ9ZChJLDAsWzJdLFwiMDJcIik7dmFyIEs9ZChJLDAsWzNdLFwiMDJcIik7dmFyIHI9ZChJLDAsWzRdLFwiMDJcIik7dmFyIHM9ZChJLDAsWzVdLFwiMDJcIik7dmFyIFA9bmV3IEMoKTtQLnNldFByaXZhdGUobmV3IEJpZ0ludGVnZXIoRSwxNiksbmV3IEJpZ0ludGVnZXIoRCwxNiksbmV3IEJpZ0ludGVnZXIoSywxNiksbmV3IEJpZ0ludGVnZXIociwxNiksbmV3IEJpZ0ludGVnZXIocywxNikpO3JldHVybiBQfWlmKGwuaW5kZXhPZihcIi1FTkQgUFJJVkFURSBLRVktXCIpIT0tMSl7cmV0dXJuIEYuZ2V0S2V5RnJvbVBsYWluUHJpdmF0ZVBLQ1M4UEVNKGwpfWlmKGwuaW5kZXhPZihcIi1FTkQgUlNBIFBSSVZBVEUgS0VZLVwiKSE9LTEmJmwuaW5kZXhPZihcIjQsRU5DUllQVEVEXCIpIT0tMSl7dmFyIG89Ri5nZXREZWNyeXB0ZWRLZXlIZXgobCxrKTt2YXIgSD1uZXcgUlNBS2V5KCk7SC5yZWFkUEtDUzVQcnZLZXlIZXgobyk7cmV0dXJuIEh9aWYobC5pbmRleE9mKFwiLUVORCBFQyBQUklWQVRFIEtFWS1cIikhPS0xJiZsLmluZGV4T2YoXCI0LEVOQ1JZUFRFRFwiKSE9LTEpe3ZhciBJPUYuZ2V0RGVjcnlwdGVkS2V5SGV4KGwsayk7dmFyIFA9ZChJLDAsWzFdLFwiMDRcIik7dmFyIGY9ZChJLDAsWzIsMF0sXCIwNlwiKTt2YXIgQT1kKEksMCxbMywwXSxcIjAzXCIpLnN1YnN0cigyKTt2YXIgZT1cIlwiO2lmKEtKVVIuY3J5cHRvLk9JRC5vaWRoZXgybmFtZVtmXSE9PXVuZGVmaW5lZCl7ZT1LSlVSLmNyeXB0by5PSUQub2lkaGV4Mm5hbWVbZl19ZWxzZXt0aHJvd1widW5kZWZpbmVkIE9JRChoZXgpIGluIEtKVVIuY3J5cHRvLk9JRDogXCIrZn12YXIgaj1uZXcgaSh7Y3VydmU6ZX0pO2ouc2V0UHVibGljS2V5SGV4KEEpO2ouc2V0UHJpdmF0ZUtleUhleChQKTtqLmlzUHVibGljPWZhbHNlO3JldHVybiBqfWlmKGwuaW5kZXhPZihcIi1FTkQgRFNBIFBSSVZBVEUgS0VZLVwiKSE9LTEmJmwuaW5kZXhPZihcIjQsRU5DUllQVEVEXCIpIT0tMSl7dmFyIEk9Ri5nZXREZWNyeXB0ZWRLZXlIZXgobCxrKTt2YXIgRT1kKEksMCxbMV0sXCIwMlwiKTt2YXIgRD1kKEksMCxbMl0sXCIwMlwiKTt2YXIgSz1kKEksMCxbM10sXCIwMlwiKTt2YXIgcj1kKEksMCxbNF0sXCIwMlwiKTt2YXIgcz1kKEksMCxbNV0sXCIwMlwiKTt2YXIgUD1uZXcgQygpO1Auc2V0UHJpdmF0ZShuZXcgQmlnSW50ZWdlcihFLDE2KSxuZXcgQmlnSW50ZWdlcihELDE2KSxuZXcgQmlnSW50ZWdlcihLLDE2KSxuZXcgQmlnSW50ZWdlcihyLDE2KSxuZXcgQmlnSW50ZWdlcihzLDE2KSk7cmV0dXJuIFB9aWYobC5pbmRleE9mKFwiLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktXCIpIT0tMSl7cmV0dXJuIEYuZ2V0S2V5RnJvbUVuY3J5cHRlZFBLQ1M4UEVNKGwsayl9dGhyb3dcIm5vdCBzdXBwb3J0ZWQgYXJndW1lbnRcIn07S0VZVVRJTC5nZW5lcmF0ZUtleXBhaXI9ZnVuY3Rpb24oYSxjKXtpZihhPT1cIlJTQVwiKXt2YXIgYj1jO3ZhciBoPW5ldyBSU0FLZXkoKTtoLmdlbmVyYXRlKGIsXCIxMDAwMVwiKTtoLmlzUHJpdmF0ZT10cnVlO2guaXNQdWJsaWM9dHJ1ZTt2YXIgZj1uZXcgUlNBS2V5KCk7dmFyIGU9aC5uLnRvU3RyaW5nKDE2KTt2YXIgaT1oLmUudG9TdHJpbmcoMTYpO2Yuc2V0UHVibGljKGUsaSk7Zi5pc1ByaXZhdGU9ZmFsc2U7Zi5pc1B1YmxpYz10cnVlO3ZhciBrPXt9O2sucHJ2S2V5T2JqPWg7ay5wdWJLZXlPYmo9ZjtyZXR1cm4ga31lbHNle2lmKGE9PVwiRUNcIil7dmFyIGQ9Yzt2YXIgZz1uZXcgS0pVUi5jcnlwdG8uRUNEU0Eoe2N1cnZlOmR9KTt2YXIgaj1nLmdlbmVyYXRlS2V5UGFpckhleCgpO3ZhciBoPW5ldyBLSlVSLmNyeXB0by5FQ0RTQSh7Y3VydmU6ZH0pO2guc2V0UHVibGljS2V5SGV4KGouZWNwdWJoZXgpO2guc2V0UHJpdmF0ZUtleUhleChqLmVjcHJ2aGV4KTtoLmlzUHJpdmF0ZT10cnVlO2guaXNQdWJsaWM9ZmFsc2U7dmFyIGY9bmV3IEtKVVIuY3J5cHRvLkVDRFNBKHtjdXJ2ZTpkfSk7Zi5zZXRQdWJsaWNLZXlIZXgoai5lY3B1YmhleCk7Zi5pc1ByaXZhdGU9ZmFsc2U7Zi5pc1B1YmxpYz10cnVlO3ZhciBrPXt9O2sucHJ2S2V5T2JqPWg7ay5wdWJLZXlPYmo9ZjtyZXR1cm4ga31lbHNle3Rocm93XCJ1bmtub3duIGFsZ29yaXRobTogXCIrYX19fTtLRVlVVElMLmdldFBFTT1mdW5jdGlvbihiLEQseSxtLHEsail7dmFyIEY9S0pVUixrPUYuYXNuMSx6PWsuREVST2JqZWN0SWRlbnRpZmllcixmPWsuREVSSW50ZWdlcixsPWsuQVNOMVV0aWwubmV3T2JqZWN0LGE9ay54NTA5LEM9YS5TdWJqZWN0UHVibGljS2V5SW5mbyxlPUYuY3J5cHRvLHU9ZS5EU0Escj1lLkVDRFNBLG49UlNBS2V5O2Z1bmN0aW9uIEEocyl7dmFyIEc9bCh7c2VxOlt7XCJpbnRcIjowfSx7XCJpbnRcIjp7YmlnaW50OnMubn19LHtcImludFwiOnMuZX0se1wiaW50XCI6e2JpZ2ludDpzLmR9fSx7XCJpbnRcIjp7YmlnaW50OnMucH19LHtcImludFwiOntiaWdpbnQ6cy5xfX0se1wiaW50XCI6e2JpZ2ludDpzLmRtcDF9fSx7XCJpbnRcIjp7YmlnaW50OnMuZG1xMX19LHtcImludFwiOntiaWdpbnQ6cy5jb2VmZn19XX0pO3JldHVybiBHfWZ1bmN0aW9uIEIoRyl7dmFyIHM9bCh7c2VxOlt7XCJpbnRcIjoxfSx7b2N0c3RyOntoZXg6Ry5wcnZLZXlIZXh9fSx7dGFnOltcImEwXCIsdHJ1ZSx7b2lkOntuYW1lOkcuY3VydmVOYW1lfX1dfSx7dGFnOltcImExXCIsdHJ1ZSx7Yml0c3RyOntoZXg6XCIwMFwiK0cucHViS2V5SGV4fX1dfV19KTtyZXR1cm4gc31mdW5jdGlvbiB4KHMpe3ZhciBHPWwoe3NlcTpbe1wiaW50XCI6MH0se1wiaW50XCI6e2JpZ2ludDpzLnB9fSx7XCJpbnRcIjp7YmlnaW50OnMucX19LHtcImludFwiOntiaWdpbnQ6cy5nfX0se1wiaW50XCI6e2JpZ2ludDpzLnl9fSx7XCJpbnRcIjp7YmlnaW50OnMueH19XX0pO3JldHVybiBHfWlmKCgobiE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIG4pfHwodSE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHUpfHwociE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHIpKSYmYi5pc1B1YmxpYz09dHJ1ZSYmKEQ9PT11bmRlZmluZWR8fEQ9PVwiUEtDUzhQVUJcIikpe3ZhciBFPW5ldyBDKGIpO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO3JldHVybiBoZXh0b3BlbSh3LFwiUFVCTElDIEtFWVwiKX1pZihEPT1cIlBLQ1MxUFJWXCImJm4hPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiBuJiYoeT09PXVuZGVmaW5lZHx8eT09bnVsbCkmJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgRT1BKGIpO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO3JldHVybiBoZXh0b3BlbSh3LFwiUlNBIFBSSVZBVEUgS0VZXCIpfWlmKEQ9PVwiUEtDUzFQUlZcIiYmciE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHImJih5PT09dW5kZWZpbmVkfHx5PT1udWxsKSYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBpPW5ldyB6KHtuYW1lOmIuY3VydmVOYW1lfSk7dmFyIHY9aS5nZXRFbmNvZGVkSGV4KCk7dmFyIGg9QihiKTt2YXIgdD1oLmdldEVuY29kZWRIZXgoKTt2YXIgcD1cIlwiO3ArPWhleHRvcGVtKHYsXCJFQyBQQVJBTUVURVJTXCIpO3ArPWhleHRvcGVtKHQsXCJFQyBQUklWQVRFIEtFWVwiKTtyZXR1cm4gcH1pZihEPT1cIlBLQ1MxUFJWXCImJnUhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiB1JiYoeT09PXVuZGVmaW5lZHx8eT09bnVsbCkmJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgRT14KGIpO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO3JldHVybiBoZXh0b3BlbSh3LFwiRFNBIFBSSVZBVEUgS0VZXCIpfWlmKEQ9PVwiUEtDUzVQUlZcIiYmbiE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIG4mJih5IT09dW5kZWZpbmVkJiZ5IT1udWxsKSYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBFPUEoYik7dmFyIHc9RS5nZXRFbmNvZGVkSGV4KCk7aWYobT09PXVuZGVmaW5lZCl7bT1cIkRFUy1FREUzLUNCQ1wifXJldHVybiB0aGlzLmdldEVuY3J5cHRlZFBLQ1M1UEVNRnJvbVBydktleUhleChcIlJTQVwiLHcseSxtLGopfWlmKEQ9PVwiUEtDUzVQUlZcIiYmciE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHImJih5IT09dW5kZWZpbmVkJiZ5IT1udWxsKSYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBFPUIoYik7dmFyIHc9RS5nZXRFbmNvZGVkSGV4KCk7aWYobT09PXVuZGVmaW5lZCl7bT1cIkRFUy1FREUzLUNCQ1wifXJldHVybiB0aGlzLmdldEVuY3J5cHRlZFBLQ1M1UEVNRnJvbVBydktleUhleChcIkVDXCIsdyx5LG0sail9aWYoRD09XCJQS0NTNVBSVlwiJiZ1IT09dW5kZWZpbmVkJiZiIGluc3RhbmNlb2YgdSYmKHkhPT11bmRlZmluZWQmJnkhPW51bGwpJiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIEU9eChiKTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtpZihtPT09dW5kZWZpbmVkKXttPVwiREVTLUVERTMtQ0JDXCJ9cmV0dXJuIHRoaXMuZ2V0RW5jcnlwdGVkUEtDUzVQRU1Gcm9tUHJ2S2V5SGV4KFwiRFNBXCIsdyx5LG0sail9dmFyIG89ZnVuY3Rpb24oRyxzKXt2YXIgST1jKEcscyk7dmFyIEg9bmV3IGwoe3NlcTpbe3NlcTpbe29pZDp7bmFtZTpcInBrY3M1UEJFUzJcIn19LHtzZXE6W3tzZXE6W3tvaWQ6e25hbWU6XCJwa2NzNVBCS0RGMlwifX0se3NlcTpbe29jdHN0cjp7aGV4OkkucGJrZGYyU2FsdH19LHtcImludFwiOkkucGJrZGYySXRlcn1dfV19LHtzZXE6W3tvaWQ6e25hbWU6XCJkZXMtRURFMy1DQkNcIn19LHtvY3RzdHI6e2hleDpJLmVuY3J5cHRpb25TY2hlbWVJVn19XX1dfV19LHtvY3RzdHI6e2hleDpJLmNpcGhlcnRleHR9fV19KTtyZXR1cm4gSC5nZXRFbmNvZGVkSGV4KCl9O3ZhciBjPWZ1bmN0aW9uKE4sTyl7dmFyIEg9MTAwO3ZhciBNPUNyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKDgpO3ZhciBMPVwiREVTLUVERTMtQ0JDXCI7dmFyIHM9Q3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20oOCk7dmFyIEk9Q3J5cHRvSlMuUEJLREYyKE8sTSx7a2V5U2l6ZToxOTIvMzIsaXRlcmF0aW9uczpIfSk7dmFyIEo9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZShOKTt2YXIgSz1DcnlwdG9KUy5UcmlwbGVERVMuZW5jcnlwdChKLEkse2l2OnN9KStcIlwiO3ZhciBHPXt9O0cuY2lwaGVydGV4dD1LO0cucGJrZGYyU2FsdD1DcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeShNKTtHLnBia2RmMkl0ZXI9SDtHLmVuY3J5cHRpb25TY2hlbWVBbGc9TDtHLmVuY3J5cHRpb25TY2hlbWVJVj1DcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeShzKTtyZXR1cm4gR307aWYoRD09XCJQS0NTOFBSVlwiJiZuIT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiBuJiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIGc9QShiKTt2YXIgZD1nLmdldEVuY29kZWRIZXgoKTt2YXIgRT1sKHtzZXE6W3tcImludFwiOjB9LHtzZXE6W3tvaWQ6e25hbWU6XCJyc2FFbmNyeXB0aW9uXCJ9fSx7XCJudWxsXCI6dHJ1ZX1dfSx7b2N0c3RyOntoZXg6ZH19XX0pO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO2lmKHk9PT11bmRlZmluZWR8fHk9PW51bGwpe3JldHVybiBoZXh0b3BlbSh3LFwiUFJJVkFURSBLRVlcIil9ZWxzZXt2YXIgdD1vKHcseSk7cmV0dXJuIGhleHRvcGVtKHQsXCJFTkNSWVBURUQgUFJJVkFURSBLRVlcIil9fWlmKEQ9PVwiUEtDUzhQUlZcIiYmciE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHImJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgZz1uZXcgbCh7c2VxOlt7XCJpbnRcIjoxfSx7b2N0c3RyOntoZXg6Yi5wcnZLZXlIZXh9fSx7dGFnOltcImExXCIsdHJ1ZSx7Yml0c3RyOntoZXg6XCIwMFwiK2IucHViS2V5SGV4fX1dfV19KTt2YXIgZD1nLmdldEVuY29kZWRIZXgoKTt2YXIgRT1sKHtzZXE6W3tcImludFwiOjB9LHtzZXE6W3tvaWQ6e25hbWU6XCJlY1B1YmxpY0tleVwifX0se29pZDp7bmFtZTpiLmN1cnZlTmFtZX19XX0se29jdHN0cjp7aGV4OmR9fV19KTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtpZih5PT09dW5kZWZpbmVkfHx5PT1udWxsKXtyZXR1cm4gaGV4dG9wZW0odyxcIlBSSVZBVEUgS0VZXCIpfWVsc2V7dmFyIHQ9byh3LHkpO3JldHVybiBoZXh0b3BlbSh0LFwiRU5DUllQVEVEIFBSSVZBVEUgS0VZXCIpfX1pZihEPT1cIlBLQ1M4UFJWXCImJnUhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiB1JiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIGc9bmV3IGYoe2JpZ2ludDpiLnh9KTt2YXIgZD1nLmdldEVuY29kZWRIZXgoKTt2YXIgRT1sKHtzZXE6W3tcImludFwiOjB9LHtzZXE6W3tvaWQ6e25hbWU6XCJkc2FcIn19LHtzZXE6W3tcImludFwiOntiaWdpbnQ6Yi5wfX0se1wiaW50XCI6e2JpZ2ludDpiLnF9fSx7XCJpbnRcIjp7YmlnaW50OmIuZ319XX1dfSx7b2N0c3RyOntoZXg6ZH19XX0pO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO2lmKHk9PT11bmRlZmluZWR8fHk9PW51bGwpe3JldHVybiBoZXh0b3BlbSh3LFwiUFJJVkFURSBLRVlcIil9ZWxzZXt2YXIgdD1vKHcseSk7cmV0dXJuIGhleHRvcGVtKHQsXCJFTkNSWVBURUQgUFJJVkFURSBLRVlcIil9fXRocm93XCJ1bnN1cHBvcnRlZCBvYmplY3Qgbm9yIGZvcm1hdFwifTtLRVlVVElMLmdldEtleUZyb21DU1JQRU09ZnVuY3Rpb24oYil7dmFyIGE9cGVtdG9oZXgoYixcIkNFUlRJRklDQVRFIFJFUVVFU1RcIik7dmFyIGM9S0VZVVRJTC5nZXRLZXlGcm9tQ1NSSGV4KGEpO3JldHVybiBjfTtLRVlVVElMLmdldEtleUZyb21DU1JIZXg9ZnVuY3Rpb24oYSl7dmFyIGM9S0VZVVRJTC5wYXJzZUNTUkhleChhKTt2YXIgYj1LRVlVVElMLmdldEtleShjLnA4cHVia2V5aGV4LG51bGwsXCJwa2NzOHB1YlwiKTtyZXR1cm4gYn07S0VZVVRJTC5wYXJzZUNTUkhleD1mdW5jdGlvbihkKXt2YXIgaT1BU04xSEVYO3ZhciBmPWkuZ2V0Q2hpbGRJZHg7dmFyIGM9aS5nZXRUTFY7dmFyIGI9e307dmFyIGc9ZDtpZihnLnN1YnN0cigwLDIpIT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgQ1NSKGNvZGU6MDAxKVwifXZhciBlPWYoZywwKTtpZihlLmxlbmd0aDwxKXt0aHJvd1wibWFsZm9ybWVkIENTUihjb2RlOjAwMilcIn1pZihnLnN1YnN0cihlWzBdLDIpIT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgQ1NSKGNvZGU6MDAzKVwifXZhciBhPWYoZyxlWzBdKTtpZihhLmxlbmd0aDwzKXt0aHJvd1wibWFsZm9ybWVkIENTUihjb2RlOjAwNClcIn1iLnA4cHVia2V5aGV4PWMoZyxhWzJdKTtyZXR1cm4gYn07S0VZVVRJTC5nZXRKV0tGcm9tS2V5PWZ1bmN0aW9uKGQpe3ZhciBiPXt9O2lmKGQgaW5zdGFuY2VvZiBSU0FLZXkmJmQuaXNQcml2YXRlKXtiLmt0eT1cIlJTQVwiO2Iubj1oZXh0b2I2NHUoZC5uLnRvU3RyaW5nKDE2KSk7Yi5lPWhleHRvYjY0dShkLmUudG9TdHJpbmcoMTYpKTtiLmQ9aGV4dG9iNjR1KGQuZC50b1N0cmluZygxNikpO2IucD1oZXh0b2I2NHUoZC5wLnRvU3RyaW5nKDE2KSk7Yi5xPWhleHRvYjY0dShkLnEudG9TdHJpbmcoMTYpKTtiLmRwPWhleHRvYjY0dShkLmRtcDEudG9TdHJpbmcoMTYpKTtiLmRxPWhleHRvYjY0dShkLmRtcTEudG9TdHJpbmcoMTYpKTtiLnFpPWhleHRvYjY0dShkLmNvZWZmLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGJ9ZWxzZXtpZihkIGluc3RhbmNlb2YgUlNBS2V5JiZkLmlzUHVibGljKXtiLmt0eT1cIlJTQVwiO2Iubj1oZXh0b2I2NHUoZC5uLnRvU3RyaW5nKDE2KSk7Yi5lPWhleHRvYjY0dShkLmUudG9TdHJpbmcoMTYpKTtyZXR1cm4gYn1lbHNle2lmKGQgaW5zdGFuY2VvZiBLSlVSLmNyeXB0by5FQ0RTQSYmZC5pc1ByaXZhdGUpe3ZhciBhPWQuZ2V0U2hvcnROSVNUUEN1cnZlTmFtZSgpO2lmKGEhPT1cIlAtMjU2XCImJmEhPT1cIlAtMzg0XCIpe3Rocm93XCJ1bnN1cHBvcnRlZCBjdXJ2ZSBuYW1lIGZvciBKV1Q6IFwiK2F9dmFyIGM9ZC5nZXRQdWJsaWNLZXlYWUhleCgpO2Iua3R5PVwiRUNcIjtiLmNydj1hO2IueD1oZXh0b2I2NHUoYy54KTtiLnk9aGV4dG9iNjR1KGMueSk7Yi5kPWhleHRvYjY0dShkLnBydktleUhleCk7cmV0dXJuIGJ9ZWxzZXtpZihkIGluc3RhbmNlb2YgS0pVUi5jcnlwdG8uRUNEU0EmJmQuaXNQdWJsaWMpe3ZhciBhPWQuZ2V0U2hvcnROSVNUUEN1cnZlTmFtZSgpO2lmKGEhPT1cIlAtMjU2XCImJmEhPT1cIlAtMzg0XCIpe3Rocm93XCJ1bnN1cHBvcnRlZCBjdXJ2ZSBuYW1lIGZvciBKV1Q6IFwiK2F9dmFyIGM9ZC5nZXRQdWJsaWNLZXlYWUhleCgpO2Iua3R5PVwiRUNcIjtiLmNydj1hO2IueD1oZXh0b2I2NHUoYy54KTtiLnk9aGV4dG9iNjR1KGMueSk7cmV0dXJuIGJ9fX19dGhyb3dcIm5vdCBzdXBwb3J0ZWQga2V5IG9iamVjdFwifTtcblJTQUtleS5nZXRQb3NBcnJheU9mQ2hpbGRyZW5Gcm9tSGV4PWZ1bmN0aW9uKGEpe3JldHVybiBBU04xSEVYLmdldENoaWxkSWR4KGEsMCl9O1JTQUtleS5nZXRIZXhWYWx1ZUFycmF5T2ZDaGlsZHJlbkZyb21IZXg9ZnVuY3Rpb24oZil7dmFyIG49QVNOMUhFWDt2YXIgaT1uLmdldFY7dmFyIGs9UlNBS2V5LmdldFBvc0FycmF5T2ZDaGlsZHJlbkZyb21IZXgoZik7dmFyIGU9aShmLGtbMF0pO3ZhciBqPWkoZixrWzFdKTt2YXIgYj1pKGYsa1syXSk7dmFyIGM9aShmLGtbM10pO3ZhciBoPWkoZixrWzRdKTt2YXIgZz1pKGYsa1s1XSk7dmFyIG09aShmLGtbNl0pO3ZhciBsPWkoZixrWzddKTt2YXIgZD1pKGYsa1s4XSk7dmFyIGs9bmV3IEFycmF5KCk7ay5wdXNoKGUsaixiLGMsaCxnLG0sbCxkKTtyZXR1cm4ga307UlNBS2V5LnByb3RvdHlwZS5yZWFkUHJpdmF0ZUtleUZyb21QRU1TdHJpbmc9ZnVuY3Rpb24oZCl7dmFyIGM9cGVtdG9oZXgoZCk7dmFyIGI9UlNBS2V5LmdldEhleFZhbHVlQXJyYXlPZkNoaWxkcmVuRnJvbUhleChjKTt0aGlzLnNldFByaXZhdGVFeChiWzFdLGJbMl0sYlszXSxiWzRdLGJbNV0sYls2XSxiWzddLGJbOF0pfTtSU0FLZXkucHJvdG90eXBlLnJlYWRQS0NTNVBydktleUhleD1mdW5jdGlvbihjKXt2YXIgYj1SU0FLZXkuZ2V0SGV4VmFsdWVBcnJheU9mQ2hpbGRyZW5Gcm9tSGV4KGMpO3RoaXMuc2V0UHJpdmF0ZUV4KGJbMV0sYlsyXSxiWzNdLGJbNF0sYls1XSxiWzZdLGJbN10sYls4XSl9O1JTQUtleS5wcm90b3R5cGUucmVhZFBLQ1M4UHJ2S2V5SGV4PWZ1bmN0aW9uKGUpe3ZhciBjLGosbCxiLGEsZixkLGs7dmFyIG09QVNOMUhFWDt2YXIgZz1tLmdldFZieUxpc3Q7aWYobS5pc0FTTjFIRVgoZSk9PT1mYWxzZSl7dGhyb3dcIm5vdCBBU04uMSBoZXggc3RyaW5nXCJ9dHJ5e2M9ZyhlLDAsWzIsMCwxXSxcIjAyXCIpO2o9ZyhlLDAsWzIsMCwyXSxcIjAyXCIpO2w9ZyhlLDAsWzIsMCwzXSxcIjAyXCIpO2I9ZyhlLDAsWzIsMCw0XSxcIjAyXCIpO2E9ZyhlLDAsWzIsMCw1XSxcIjAyXCIpO2Y9ZyhlLDAsWzIsMCw2XSxcIjAyXCIpO2Q9ZyhlLDAsWzIsMCw3XSxcIjAyXCIpO2s9ZyhlLDAsWzIsMCw4XSxcIjAyXCIpfWNhdGNoKGkpe3Rocm93XCJtYWxmb3JtZWQgUEtDUyM4IHBsYWluIFJTQSBwcml2YXRlIGtleVwifXRoaXMuc2V0UHJpdmF0ZUV4KGMsaixsLGIsYSxmLGQsayl9O1JTQUtleS5wcm90b3R5cGUucmVhZFBLQ1M1UHViS2V5SGV4PWZ1bmN0aW9uKGMpe3ZhciBlPUFTTjFIRVg7dmFyIGI9ZS5nZXRWO2lmKGUuaXNBU04xSEVYKGMpPT09ZmFsc2Upe3Rocm93XCJrZXlIZXggaXMgbm90IEFTTi4xIGhleCBzdHJpbmdcIn12YXIgYT1lLmdldENoaWxkSWR4KGMsMCk7aWYoYS5sZW5ndGghPT0yfHxjLnN1YnN0cihhWzBdLDIpIT09XCIwMlwifHxjLnN1YnN0cihhWzFdLDIpIT09XCIwMlwiKXt0aHJvd1wid3JvbmcgaGV4IGZvciBQS0NTIzUgcHVibGljIGtleVwifXZhciBmPWIoYyxhWzBdKTt2YXIgZD1iKGMsYVsxXSk7dGhpcy5zZXRQdWJsaWMoZixkKX07UlNBS2V5LnByb3RvdHlwZS5yZWFkUEtDUzhQdWJLZXlIZXg9ZnVuY3Rpb24oYil7dmFyIGM9QVNOMUhFWDtpZihjLmlzQVNOMUhFWChiKT09PWZhbHNlKXt0aHJvd1wibm90IEFTTi4xIGhleCBzdHJpbmdcIn1pZihjLmdldFRMVmJ5TGlzdChiLDAsWzAsMF0pIT09XCIwNjA5MmE4NjQ4ODZmNzBkMDEwMTAxXCIpe3Rocm93XCJub3QgUEtDUzggUlNBIHB1YmxpYyBrZXlcIn12YXIgYT1jLmdldFRMVmJ5TGlzdChiLDAsWzEsMF0pO3RoaXMucmVhZFBLQ1M1UHViS2V5SGV4KGEpfTtSU0FLZXkucHJvdG90eXBlLnJlYWRDZXJ0UHViS2V5SGV4PWZ1bmN0aW9uKGIsZCl7dmFyIGEsYzthPW5ldyBYNTA5KCk7YS5yZWFkQ2VydEhleChiKTtjPWEuZ2V0UHVibGljS2V5SGV4KCk7dGhpcy5yZWFkUEtDUzhQdWJLZXlIZXgoYyl9O1xudmFyIF9SRV9IRVhERUNPTkxZPW5ldyBSZWdFeHAoXCJcIik7X1JFX0hFWERFQ09OTFkuY29tcGlsZShcIlteMC05YS1mXVwiLFwiZ2lcIik7ZnVuY3Rpb24gX3JzYXNpZ25fZ2V0SGV4UGFkZGVkRGlnZXN0SW5mb0ZvclN0cmluZyhkLGUsYSl7dmFyIGI9ZnVuY3Rpb24oZil7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaFN0cmluZyhmLGEpfTt2YXIgYz1iKGQpO3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmdldFBhZGRlZERpZ2VzdEluZm9IZXgoYyxhLGUpfWZ1bmN0aW9uIF96ZXJvUGFkZGluZ09mU2lnbmF0dXJlKGUsZCl7dmFyIGM9XCJcIjt2YXIgYT1kLzQtZS5sZW5ndGg7Zm9yKHZhciBiPTA7YjxhO2IrKyl7Yz1jK1wiMFwifXJldHVybiBjK2V9UlNBS2V5LnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGQsYSl7dmFyIGI9ZnVuY3Rpb24oZSl7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaFN0cmluZyhlLGEpfTt2YXIgYz1iKGQpO3JldHVybiB0aGlzLnNpZ25XaXRoTWVzc2FnZUhhc2goYyxhKX07UlNBS2V5LnByb3RvdHlwZS5zaWduV2l0aE1lc3NhZ2VIYXNoPWZ1bmN0aW9uKGUsYyl7dmFyIGY9S0pVUi5jcnlwdG8uVXRpbC5nZXRQYWRkZWREaWdlc3RJbmZvSGV4KGUsYyx0aGlzLm4uYml0TGVuZ3RoKCkpO3ZhciBiPXBhcnNlQmlnSW50KGYsMTYpO3ZhciBkPXRoaXMuZG9Qcml2YXRlKGIpO3ZhciBhPWQudG9TdHJpbmcoMTYpO3JldHVybiBfemVyb1BhZGRpbmdPZlNpZ25hdHVyZShhLHRoaXMubi5iaXRMZW5ndGgoKSl9O2Z1bmN0aW9uIHBzc19tZ2YxX3N0cihjLGEsZSl7dmFyIGI9XCJcIixkPTA7d2hpbGUoYi5sZW5ndGg8YSl7Yis9aGV4dG9yc3RyKGUocnN0cnRvaGV4KGMrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsWyhkJjQyNzgxOTAwODApPj4yNCwoZCYxNjcxMTY4MCk+PjE2LChkJjY1MjgwKT4+OCxkJjI1NV0pKSkpO2QrPTF9cmV0dXJuIGJ9UlNBS2V5LnByb3RvdHlwZS5zaWduUFNTPWZ1bmN0aW9uKGUsYSxkKXt2YXIgYz1mdW5jdGlvbihmKXtyZXR1cm4gS0pVUi5jcnlwdG8uVXRpbC5oYXNoSGV4KGYsYSl9O3ZhciBiPWMocnN0cnRvaGV4KGUpKTtpZihkPT09dW5kZWZpbmVkKXtkPS0xfXJldHVybiB0aGlzLnNpZ25XaXRoTWVzc2FnZUhhc2hQU1MoYixhLGQpfTtSU0FLZXkucHJvdG90eXBlLnNpZ25XaXRoTWVzc2FnZUhhc2hQU1M9ZnVuY3Rpb24obCxhLGspe3ZhciBiPWhleHRvcnN0cihsKTt2YXIgZz1iLmxlbmd0aDt2YXIgbT10aGlzLm4uYml0TGVuZ3RoKCktMTt2YXIgYz1NYXRoLmNlaWwobS84KTt2YXIgZDt2YXIgbz1mdW5jdGlvbihpKXtyZXR1cm4gS0pVUi5jcnlwdG8uVXRpbC5oYXNoSGV4KGksYSl9O2lmKGs9PT0tMXx8az09PXVuZGVmaW5lZCl7az1nfWVsc2V7aWYoaz09PS0yKXtrPWMtZy0yfWVsc2V7aWYoazwtMil7dGhyb3dcImludmFsaWQgc2FsdCBsZW5ndGhcIn19fWlmKGM8KGcraysyKSl7dGhyb3dcImRhdGEgdG9vIGxvbmdcIn12YXIgZj1cIlwiO2lmKGs+MCl7Zj1uZXcgQXJyYXkoayk7bmV3IFNlY3VyZVJhbmRvbSgpLm5leHRCeXRlcyhmKTtmPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGYpfXZhciBuPWhleHRvcnN0cihvKHJzdHJ0b2hleChcIlxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcIitiK2YpKSk7dmFyIGo9W107Zm9yKGQ9MDtkPGMtay1nLTI7ZCs9MSl7altkXT0wfXZhciBlPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGopK1wiXFx4MDFcIitmO3ZhciBoPXBzc19tZ2YxX3N0cihuLGUubGVuZ3RoLG8pO3ZhciBxPVtdO2ZvcihkPTA7ZDxlLmxlbmd0aDtkKz0xKXtxW2RdPWUuY2hhckNvZGVBdChkKV5oLmNoYXJDb2RlQXQoZCl9dmFyIHA9KDY1MjgwPj4oOCpjLW0pKSYyNTU7cVswXSY9fnA7Zm9yKGQ9MDtkPGc7ZCsrKXtxLnB1c2gobi5jaGFyQ29kZUF0KGQpKX1xLnB1c2goMTg4KTtyZXR1cm4gX3plcm9QYWRkaW5nT2ZTaWduYXR1cmUodGhpcy5kb1ByaXZhdGUobmV3IEJpZ0ludGVnZXIocSkpLnRvU3RyaW5nKDE2KSx0aGlzLm4uYml0TGVuZ3RoKCkpfTtmdW5jdGlvbiBfcnNhc2lnbl9nZXREZWNyeXB0U2lnbmF0dXJlQkkoYSxkLGMpe3ZhciBiPW5ldyBSU0FLZXkoKTtiLnNldFB1YmxpYyhkLGMpO3ZhciBlPWIuZG9QdWJsaWMoYSk7cmV0dXJuIGV9ZnVuY3Rpb24gX3JzYXNpZ25fZ2V0SGV4RGlnZXN0SW5mb0Zyb21TaWcoYSxjLGIpe3ZhciBlPV9yc2FzaWduX2dldERlY3J5cHRTaWduYXR1cmVCSShhLGMsYik7dmFyIGQ9ZS50b1N0cmluZygxNikucmVwbGFjZSgvXjFmKzAwLyxcIlwiKTtyZXR1cm4gZH1mdW5jdGlvbiBfcnNhc2lnbl9nZXRBbGdOYW1lQW5kSGFzaEZyb21IZXhEaXNnZXN0SW5mbyhmKXtmb3IodmFyIGUgaW4gS0pVUi5jcnlwdG8uVXRpbC5ESUdFU1RJTkZPSEVBRCl7dmFyIGQ9S0pVUi5jcnlwdG8uVXRpbC5ESUdFU1RJTkZPSEVBRFtlXTt2YXIgYj1kLmxlbmd0aDtpZihmLnN1YnN0cmluZygwLGIpPT1kKXt2YXIgYz1bZSxmLnN1YnN0cmluZyhiKV07cmV0dXJuIGN9fXJldHVybltdfVJTQUtleS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGYsail7aj1qLnJlcGxhY2UoX1JFX0hFWERFQ09OTFksXCJcIik7aj1qLnJlcGxhY2UoL1sgXFxuXSsvZyxcIlwiKTt2YXIgYj1wYXJzZUJpZ0ludChqLDE2KTtpZihiLmJpdExlbmd0aCgpPnRoaXMubi5iaXRMZW5ndGgoKSl7cmV0dXJuIDB9dmFyIGk9dGhpcy5kb1B1YmxpYyhiKTt2YXIgZT1pLnRvU3RyaW5nKDE2KS5yZXBsYWNlKC9eMWYrMDAvLFwiXCIpO3ZhciBnPV9yc2FzaWduX2dldEFsZ05hbWVBbmRIYXNoRnJvbUhleERpc2dlc3RJbmZvKGUpO2lmKGcubGVuZ3RoPT0wKXtyZXR1cm4gZmFsc2V9dmFyIGQ9Z1swXTt2YXIgaD1nWzFdO3ZhciBhPWZ1bmN0aW9uKGspe3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmhhc2hTdHJpbmcoayxkKX07dmFyIGM9YShmKTtyZXR1cm4oaD09Yyl9O1JTQUtleS5wcm90b3R5cGUudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoPWZ1bmN0aW9uKGUsYSl7YT1hLnJlcGxhY2UoX1JFX0hFWERFQ09OTFksXCJcIik7YT1hLnJlcGxhY2UoL1sgXFxuXSsvZyxcIlwiKTt2YXIgYj1wYXJzZUJpZ0ludChhLDE2KTtpZihiLmJpdExlbmd0aCgpPnRoaXMubi5iaXRMZW5ndGgoKSl7cmV0dXJuIDB9dmFyIGg9dGhpcy5kb1B1YmxpYyhiKTt2YXIgZz1oLnRvU3RyaW5nKDE2KS5yZXBsYWNlKC9eMWYrMDAvLFwiXCIpO3ZhciBjPV9yc2FzaWduX2dldEFsZ05hbWVBbmRIYXNoRnJvbUhleERpc2dlc3RJbmZvKGcpO2lmKGMubGVuZ3RoPT0wKXtyZXR1cm4gZmFsc2V9dmFyIGQ9Y1swXTt2YXIgZj1jWzFdO3JldHVybihmPT1lKX07UlNBS2V5LnByb3RvdHlwZS52ZXJpZnlQU1M9ZnVuY3Rpb24oYyxiLGEsZil7dmFyIGU9ZnVuY3Rpb24oZyl7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaEhleChnLGEpfTt2YXIgZD1lKHJzdHJ0b2hleChjKSk7aWYoZj09PXVuZGVmaW5lZCl7Zj0tMX1yZXR1cm4gdGhpcy52ZXJpZnlXaXRoTWVzc2FnZUhhc2hQU1MoZCxiLGEsZil9O1JTQUtleS5wcm90b3R5cGUudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoUFNTPWZ1bmN0aW9uKGYscyxsLGMpe3ZhciBrPW5ldyBCaWdJbnRlZ2VyKHMsMTYpO2lmKGsuYml0TGVuZ3RoKCk+dGhpcy5uLmJpdExlbmd0aCgpKXtyZXR1cm4gZmFsc2V9dmFyIHI9ZnVuY3Rpb24oaSl7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaEhleChpLGwpfTt2YXIgaj1oZXh0b3JzdHIoZik7dmFyIGg9ai5sZW5ndGg7dmFyIGc9dGhpcy5uLmJpdExlbmd0aCgpLTE7dmFyIG09TWF0aC5jZWlsKGcvOCk7dmFyIHE7aWYoYz09PS0xfHxjPT09dW5kZWZpbmVkKXtjPWh9ZWxzZXtpZihjPT09LTIpe2M9bS1oLTJ9ZWxzZXtpZihjPC0yKXt0aHJvd1wiaW52YWxpZCBzYWx0IGxlbmd0aFwifX19aWYobTwoaCtjKzIpKXt0aHJvd1wiZGF0YSB0b28gbG9uZ1wifXZhciBhPXRoaXMuZG9QdWJsaWMoaykudG9CeXRlQXJyYXkoKTtmb3IocT0wO3E8YS5sZW5ndGg7cSs9MSl7YVtxXSY9MjU1fXdoaWxlKGEubGVuZ3RoPG0pe2EudW5zaGlmdCgwKX1pZihhW20tMV0hPT0xODgpe3Rocm93XCJlbmNvZGVkIG1lc3NhZ2UgZG9lcyBub3QgZW5kIGluIDB4YmNcIn1hPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGEpO3ZhciBkPWEuc3Vic3RyKDAsbS1oLTEpO3ZhciBlPWEuc3Vic3RyKGQubGVuZ3RoLGgpO3ZhciBwPSg2NTI4MD4+KDgqbS1nKSkmMjU1O2lmKChkLmNoYXJDb2RlQXQoMCkmcCkhPT0wKXt0aHJvd1wiYml0cyBiZXlvbmQga2V5c2l6ZSBub3QgemVyb1wifXZhciBuPXBzc19tZ2YxX3N0cihlLGQubGVuZ3RoLHIpO3ZhciBvPVtdO2ZvcihxPTA7cTxkLmxlbmd0aDtxKz0xKXtvW3FdPWQuY2hhckNvZGVBdChxKV5uLmNoYXJDb2RlQXQocSl9b1swXSY9fnA7dmFyIGI9bS1oLWMtMjtmb3IocT0wO3E8YjtxKz0xKXtpZihvW3FdIT09MCl7dGhyb3dcImxlZnRtb3N0IG9jdGV0cyBub3QgemVyb1wifX1pZihvW2JdIT09MSl7dGhyb3dcIjB4MDEgbWFya2VyIG5vdCBmb3VuZFwifXJldHVybiBlPT09aGV4dG9yc3RyKHIocnN0cnRvaGV4KFwiXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFwiK2orU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsby5zbGljZSgtYykpKSkpfTtSU0FLZXkuU0FMVF9MRU5fSExFTj0tMTtSU0FLZXkuU0FMVF9MRU5fTUFYPS0yO1JTQUtleS5TQUxUX0xFTl9SRUNPVkVSPS0yO1xuZnVuY3Rpb24gWDUwOSgpe3ZhciBrPUFTTjFIRVgsaj1rLmdldENoaWxkSWR4LGg9ay5nZXRWLGI9ay5nZXRUTFYsZj1rLmdldFZieUxpc3QsYz1rLmdldFRMVmJ5TGlzdCxnPWsuZ2V0SWR4YnlMaXN0LGQ9ay5nZXRWaWR4LGk9ay5vaWRuYW1lLGE9WDUwOSxlPXBlbXRvaGV4O3RoaXMuaGV4PW51bGw7dGhpcy52ZXJzaW9uPTA7dGhpcy5mb2Zmc2V0PTA7dGhpcy5hRXh0SW5mbz1udWxsO3RoaXMuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe2lmKHRoaXMuaGV4PT09bnVsbHx8dGhpcy52ZXJzaW9uIT09MCl7cmV0dXJuIHRoaXMudmVyc2lvbn1pZihjKHRoaXMuaGV4LDAsWzAsMF0pIT09XCJhMDAzMDIwMTAyXCIpe3RoaXMudmVyc2lvbj0xO3RoaXMuZm9mZnNldD0tMTtyZXR1cm4gMX10aGlzLnZlcnNpb249MztyZXR1cm4gM307dGhpcy5nZXRTZXJpYWxOdW1iZXJIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLmhleCwwLFswLDErdGhpcy5mb2Zmc2V0XSxcIjAyXCIpfTt0aGlzLmdldFNpZ25hdHVyZUFsZ29yaXRobUZpZWxkPWZ1bmN0aW9uKCl7cmV0dXJuIGkoZih0aGlzLmhleCwwLFswLDIrdGhpcy5mb2Zmc2V0LDBdLFwiMDZcIikpfTt0aGlzLmdldElzc3VlckhleD1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMuaGV4LDAsWzAsMyt0aGlzLmZvZmZzZXRdLFwiMzBcIil9O3RoaXMuZ2V0SXNzdWVyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGEuaGV4MmRuKHRoaXMuZ2V0SXNzdWVySGV4KCkpfTt0aGlzLmdldFN1YmplY3RIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzLmhleCwwLFswLDUrdGhpcy5mb2Zmc2V0XSxcIjMwXCIpfTt0aGlzLmdldFN1YmplY3RTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5oZXgyZG4odGhpcy5nZXRTdWJqZWN0SGV4KCkpfTt0aGlzLmdldE5vdEJlZm9yZT1mdW5jdGlvbigpe3ZhciBsPWYodGhpcy5oZXgsMCxbMCw0K3RoaXMuZm9mZnNldCwwXSk7bD1sLnJlcGxhY2UoLyguLikvZyxcIiUkMVwiKTtsPWRlY29kZVVSSUNvbXBvbmVudChsKTtyZXR1cm4gbH07dGhpcy5nZXROb3RBZnRlcj1mdW5jdGlvbigpe3ZhciBsPWYodGhpcy5oZXgsMCxbMCw0K3RoaXMuZm9mZnNldCwxXSk7bD1sLnJlcGxhY2UoLyguLikvZyxcIiUkMVwiKTtsPWRlY29kZVVSSUNvbXBvbmVudChsKTtyZXR1cm4gbH07dGhpcy5nZXRQdWJsaWNLZXlIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gay5nZXRUTFZieUxpc3QodGhpcy5oZXgsMCxbMCw2K3RoaXMuZm9mZnNldF0sXCIzMFwiKX07dGhpcy5nZXRQdWJsaWNLZXlJZHg9ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLmhleCwwLFswLDYrdGhpcy5mb2Zmc2V0XSxcIjMwXCIpfTt0aGlzLmdldFB1YmxpY0tleUNvbnRlbnRJZHg9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLmdldFB1YmxpY0tleUlkeCgpO3JldHVybiBnKHRoaXMuaGV4LGwsWzEsMF0sXCIzMFwiKX07dGhpcy5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gS0VZVVRJTC5nZXRLZXkodGhpcy5nZXRQdWJsaWNLZXlIZXgoKSxudWxsLFwicGtjczhwdWJcIil9O3RoaXMuZ2V0U2lnbmF0dXJlQWxnb3JpdGhtTmFtZT1mdW5jdGlvbigpe3JldHVybiBpKGYodGhpcy5oZXgsMCxbMSwwXSxcIjA2XCIpKX07dGhpcy5nZXRTaWduYXR1cmVWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiBmKHRoaXMuaGV4LDAsWzJdLFwiMDNcIix0cnVlKX07dGhpcy52ZXJpZnlTaWduYXR1cmU9ZnVuY3Rpb24obil7dmFyIG89dGhpcy5nZXRTaWduYXR1cmVBbGdvcml0aG1OYW1lKCk7dmFyIGw9dGhpcy5nZXRTaWduYXR1cmVWYWx1ZUhleCgpO3ZhciBtPWModGhpcy5oZXgsMCxbMF0sXCIzMFwiKTt2YXIgcD1uZXcgS0pVUi5jcnlwdG8uU2lnbmF0dXJlKHthbGc6b30pO3AuaW5pdChuKTtwLnVwZGF0ZUhleChtKTtyZXR1cm4gcC52ZXJpZnkobCl9O3RoaXMucGFyc2VFeHQ9ZnVuY3Rpb24oKXtpZih0aGlzLnZlcnNpb24hPT0zKXtyZXR1cm4gLTF9dmFyIHA9Zyh0aGlzLmhleCwwLFswLDcsMF0sXCIzMFwiKTt2YXIgbT1qKHRoaXMuaGV4LHApO3RoaXMuYUV4dEluZm89bmV3IEFycmF5KCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe3ZhciBxPXt9O3EuY3JpdGljYWw9ZmFsc2U7dmFyIGw9aih0aGlzLmhleCxtW25dKTt2YXIgcj0wO2lmKGwubGVuZ3RoPT09Myl7cS5jcml0aWNhbD10cnVlO3I9MX1xLm9pZD1rLmhleHRvb2lkc3RyKGYodGhpcy5oZXgsbVtuXSxbMF0sXCIwNlwiKSk7dmFyIG89Zyh0aGlzLmhleCxtW25dLFsxK3JdKTtxLnZpZHg9ZCh0aGlzLmhleCxvKTt0aGlzLmFFeHRJbmZvLnB1c2gocSl9fTt0aGlzLmdldEV4dEluZm89ZnVuY3Rpb24obil7dmFyIGw9dGhpcy5hRXh0SW5mbzt2YXIgbz1uO2lmKCFuLm1hdGNoKC9eWzAtOS5dKyQvKSl7bz1LSlVSLmFzbjEueDUwOS5PSUQubmFtZTJvaWQobil9aWYobz09PVwiXCIpe3JldHVybiB1bmRlZmluZWR9Zm9yKHZhciBtPTA7bTxsLmxlbmd0aDttKyspe2lmKGxbbV0ub2lkPT09byl7cmV0dXJuIGxbbV19fXJldHVybiB1bmRlZmluZWR9O3RoaXMuZ2V0RXh0QmFzaWNDb25zdHJhaW50cz1mdW5jdGlvbigpe3ZhciBuPXRoaXMuZ2V0RXh0SW5mbyhcImJhc2ljQ29uc3RyYWludHNcIik7aWYobj09PXVuZGVmaW5lZCl7cmV0dXJuIG59dmFyIGw9aCh0aGlzLmhleCxuLnZpZHgpO2lmKGw9PT1cIlwiKXtyZXR1cm57fX1pZihsPT09XCIwMTAxZmZcIil7cmV0dXJue2NBOnRydWV9fWlmKGwuc3Vic3RyKDAsOCk9PT1cIjAxMDFmZjAyXCIpe3ZhciBvPWgobCw2KTt2YXIgbT1wYXJzZUludChvLDE2KTtyZXR1cm57Y0E6dHJ1ZSxwYXRoTGVuOm19fXRocm93XCJiYXNpY0NvbnN0cmFpbnRzIHBhcnNlIGVycm9yXCJ9O3RoaXMuZ2V0RXh0S2V5VXNhZ2VCaW49ZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEV4dEluZm8oXCJrZXlVc2FnZVwiKTtpZihvPT09dW5kZWZpbmVkKXtyZXR1cm5cIlwifXZhciBtPWgodGhpcy5oZXgsby52aWR4KTtpZihtLmxlbmd0aCUyIT0wfHxtLmxlbmd0aDw9Mil7dGhyb3dcIm1hbGZvcm1lZCBrZXkgdXNhZ2UgdmFsdWVcIn12YXIgbD1wYXJzZUludChtLnN1YnN0cigwLDIpKTt2YXIgbj1wYXJzZUludChtLnN1YnN0cigyKSwxNikudG9TdHJpbmcoMik7cmV0dXJuIG4uc3Vic3RyKDAsbi5sZW5ndGgtbCl9O3RoaXMuZ2V0RXh0S2V5VXNhZ2VTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmdldEV4dEtleVVzYWdlQmluKCk7dmFyIGw9bmV3IEFycmF5KCk7Zm9yKHZhciBtPTA7bTxuLmxlbmd0aDttKyspe2lmKG4uc3Vic3RyKG0sMSk9PVwiMVwiKXtsLnB1c2goWDUwOS5LRVlVU0FHRV9OQU1FW21dKX19cmV0dXJuIGwuam9pbihcIixcIil9O3RoaXMuZ2V0RXh0U3ViamVjdEtleUlkZW50aWZpZXI9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLmdldEV4dEluZm8oXCJzdWJqZWN0S2V5SWRlbnRpZmllclwiKTtpZihsPT09dW5kZWZpbmVkKXtyZXR1cm4gbH1yZXR1cm4gaCh0aGlzLmhleCxsLnZpZHgpfTt0aGlzLmdldEV4dEF1dGhvcml0eUtleUlkZW50aWZpZXI9ZnVuY3Rpb24oKXt2YXIgcD10aGlzLmdldEV4dEluZm8oXCJhdXRob3JpdHlLZXlJZGVudGlmaWVyXCIpO2lmKHA9PT11bmRlZmluZWQpe3JldHVybiBwfXZhciBsPXt9O3ZhciBvPWIodGhpcy5oZXgscC52aWR4KTt2YXIgbT1qKG8sMCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe2lmKG8uc3Vic3RyKG1bbl0sMik9PT1cIjgwXCIpe2wua2lkPWgobyxtW25dKX19cmV0dXJuIGx9O3RoaXMuZ2V0RXh0RXh0S2V5VXNhZ2VOYW1lPWZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5nZXRFeHRJbmZvKFwiZXh0S2V5VXNhZ2VcIik7aWYocD09PXVuZGVmaW5lZCl7cmV0dXJuIHB9dmFyIGw9bmV3IEFycmF5KCk7dmFyIG89Yih0aGlzLmhleCxwLnZpZHgpO2lmKG89PT1cIlwiKXtyZXR1cm4gbH12YXIgbT1qKG8sMCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe2wucHVzaChpKGgobyxtW25dKSkpfXJldHVybiBsfTt0aGlzLmdldEV4dFN1YmplY3RBbHROYW1lPWZ1bmN0aW9uKCl7dmFyIG09dGhpcy5nZXRFeHRTdWJqZWN0QWx0TmFtZTIoKTt2YXIgbD1uZXcgQXJyYXkoKTtmb3IodmFyIG49MDtuPG0ubGVuZ3RoO24rKyl7aWYobVtuXVswXT09PVwiRE5TXCIpe2wucHVzaChtW25dWzFdKX19cmV0dXJuIGx9O3RoaXMuZ2V0RXh0U3ViamVjdEFsdE5hbWUyPWZ1bmN0aW9uKCl7dmFyIHAscyxyO3ZhciBxPXRoaXMuZ2V0RXh0SW5mbyhcInN1YmplY3RBbHROYW1lXCIpO2lmKHE9PT11bmRlZmluZWQpe3JldHVybiBxfXZhciBsPW5ldyBBcnJheSgpO3ZhciBvPWIodGhpcy5oZXgscS52aWR4KTt2YXIgbT1qKG8sMCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe3I9by5zdWJzdHIobVtuXSwyKTtwPWgobyxtW25dKTtpZihyPT09XCI4MVwiKXtzPWhleHRvdXRmOChwKTtsLnB1c2goW1wiTUFJTFwiLHNdKX1pZihyPT09XCI4MlwiKXtzPWhleHRvdXRmOChwKTtsLnB1c2goW1wiRE5TXCIsc10pfWlmKHI9PT1cIjg0XCIpe3M9WDUwOS5oZXgyZG4ocCwwKTtsLnB1c2goW1wiRE5cIixzXSl9aWYocj09PVwiODZcIil7cz1oZXh0b3V0ZjgocCk7bC5wdXNoKFtcIlVSSVwiLHNdKX1pZihyPT09XCI4N1wiKXtzPWhleHRvaXAocCk7bC5wdXNoKFtcIklQXCIsc10pfX1yZXR1cm4gbH07dGhpcy5nZXRFeHRDUkxEaXN0cmlidXRpb25Qb2ludHNVUkk9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLmdldEV4dEluZm8oXCJjUkxEaXN0cmlidXRpb25Qb2ludHNcIik7aWYocT09PXVuZGVmaW5lZCl7cmV0dXJuIHF9dmFyIGw9bmV3IEFycmF5KCk7dmFyIG09aih0aGlzLmhleCxxLnZpZHgpO2Zvcih2YXIgbz0wO288bS5sZW5ndGg7bysrKXt0cnl7dmFyIHI9Zih0aGlzLmhleCxtW29dLFswLDAsMF0sXCI4NlwiKTt2YXIgcD1oZXh0b3V0Zjgocik7bC5wdXNoKHApfWNhdGNoKG4pe319cmV0dXJuIGx9O3RoaXMuZ2V0RXh0QUlBSW5mbz1mdW5jdGlvbigpe3ZhciBwPXRoaXMuZ2V0RXh0SW5mbyhcImF1dGhvcml0eUluZm9BY2Nlc3NcIik7aWYocD09PXVuZGVmaW5lZCl7cmV0dXJuIHB9dmFyIGw9e29jc3A6W10sY2Fpc3N1ZXI6W119O3ZhciBtPWoodGhpcy5oZXgscC52aWR4KTtmb3IodmFyIG49MDtuPG0ubGVuZ3RoO24rKyl7dmFyIHE9Zih0aGlzLmhleCxtW25dLFswXSxcIjA2XCIpO3ZhciBvPWYodGhpcy5oZXgsbVtuXSxbMV0sXCI4NlwiKTtpZihxPT09XCIyYjA2MDEwNTA1MDczMDAxXCIpe2wub2NzcC5wdXNoKGhleHRvdXRmOChvKSl9aWYocT09PVwiMmIwNjAxMDUwNTA3MzAwMlwiKXtsLmNhaXNzdWVyLnB1c2goaGV4dG91dGY4KG8pKX19cmV0dXJuIGx9O3RoaXMuZ2V0RXh0Q2VydGlmaWNhdGVQb2xpY2llcz1mdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0RXh0SW5mbyhcImNlcnRpZmljYXRlUG9saWNpZXNcIik7aWYobz09PXVuZGVmaW5lZCl7cmV0dXJuIG99dmFyIGw9Yih0aGlzLmhleCxvLnZpZHgpO3ZhciB1PVtdO3ZhciBzPWoobCwwKTtmb3IodmFyIHI9MDtyPHMubGVuZ3RoO3IrKyl7dmFyIHQ9e307dmFyIG49aihsLHNbcl0pO3QuaWQ9aShoKGwsblswXSkpO2lmKG4ubGVuZ3RoPT09Mil7dmFyIG09aihsLG5bMV0pO2Zvcih2YXIgcT0wO3E8bS5sZW5ndGg7cSsrKXt2YXIgcD1mKGwsbVtxXSxbMF0sXCIwNlwiKTtpZihwPT09XCIyYjA2MDEwNTA1MDcwMjAxXCIpe3QuY3BzPWhleHRvdXRmOChmKGwsbVtxXSxbMV0pKX1lbHNle2lmKHA9PT1cIjJiMDYwMTA1MDUwNzAyMDJcIil7dC51bm90aWNlPWhleHRvdXRmOChmKGwsbVtxXSxbMSwwXSkpfX19fXUucHVzaCh0KX1yZXR1cm4gdX07dGhpcy5yZWFkQ2VydFBFTT1mdW5jdGlvbihsKXt0aGlzLnJlYWRDZXJ0SGV4KGUobCkpfTt0aGlzLnJlYWRDZXJ0SGV4PWZ1bmN0aW9uKGwpe3RoaXMuaGV4PWw7dGhpcy5nZXRWZXJzaW9uKCk7dHJ5e2codGhpcy5oZXgsMCxbMCw3XSxcImEzXCIpO3RoaXMucGFyc2VFeHQoKX1jYXRjaChtKXt9fTt0aGlzLmdldEluZm89ZnVuY3Rpb24oKXt2YXIgbT1YNTA5O3ZhciBCLHUsejtCPVwiQmFzaWMgRmllbGRzXFxuXCI7Qis9XCIgIHNlcmlhbCBudW1iZXI6IFwiK3RoaXMuZ2V0U2VyaWFsTnVtYmVySGV4KCkrXCJcXG5cIjtCKz1cIiAgc2lnbmF0dXJlIGFsZ29yaXRobTogXCIrdGhpcy5nZXRTaWduYXR1cmVBbGdvcml0aG1GaWVsZCgpK1wiXFxuXCI7Qis9XCIgIGlzc3VlcjogXCIrdGhpcy5nZXRJc3N1ZXJTdHJpbmcoKStcIlxcblwiO0IrPVwiICBub3RCZWZvcmU6IFwiK3RoaXMuZ2V0Tm90QmVmb3JlKCkrXCJcXG5cIjtCKz1cIiAgbm90QWZ0ZXI6IFwiK3RoaXMuZ2V0Tm90QWZ0ZXIoKStcIlxcblwiO0IrPVwiICBzdWJqZWN0OiBcIit0aGlzLmdldFN1YmplY3RTdHJpbmcoKStcIlxcblwiO0IrPVwiICBzdWJqZWN0IHB1YmxpYyBrZXkgaW5mbzogXFxuXCI7dT10aGlzLmdldFB1YmxpY0tleSgpO0IrPVwiICAgIGtleSBhbGdvcml0aG06IFwiK3UudHlwZStcIlxcblwiO2lmKHUudHlwZT09PVwiUlNBXCIpe0IrPVwiICAgIG49XCIraGV4dG9wb3NoZXgodS5uLnRvU3RyaW5nKDE2KSkuc3Vic3RyKDAsMTYpK1wiLi4uXFxuXCI7Qis9XCIgICAgZT1cIitoZXh0b3Bvc2hleCh1LmUudG9TdHJpbmcoMTYpKStcIlxcblwifXo9dGhpcy5hRXh0SW5mbztpZih6IT09dW5kZWZpbmVkJiZ6IT09bnVsbCl7Qis9XCJYNTA5djMgRXh0ZW5zaW9uczpcXG5cIjtmb3IodmFyIHI9MDtyPHoubGVuZ3RoO3IrKyl7dmFyIG49eltyXTt2YXIgQT1LSlVSLmFzbjEueDUwOS5PSUQub2lkMm5hbWUobi5vaWQpO2lmKEE9PT1cIlwiKXtBPW4ub2lkfXZhciB4PVwiXCI7aWYobi5jcml0aWNhbD09PXRydWUpe3g9XCJDUklUSUNBTFwifUIrPVwiICBcIitBK1wiIFwiK3grXCI6XFxuXCI7aWYoQT09PVwiYmFzaWNDb25zdHJhaW50c1wiKXt2YXIgdj10aGlzLmdldEV4dEJhc2ljQ29uc3RyYWludHMoKTtpZih2LmNBPT09dW5kZWZpbmVkKXtCKz1cIiAgICB7fVxcblwifWVsc2V7Qis9XCIgICAgY0E9dHJ1ZVwiO2lmKHYucGF0aExlbiE9PXVuZGVmaW5lZCl7Qis9XCIsIHBhdGhMZW49XCIrdi5wYXRoTGVufUIrPVwiXFxuXCJ9fWVsc2V7aWYoQT09PVwia2V5VXNhZ2VcIil7Qis9XCIgICAgXCIrdGhpcy5nZXRFeHRLZXlVc2FnZVN0cmluZygpK1wiXFxuXCJ9ZWxzZXtpZihBPT09XCJzdWJqZWN0S2V5SWRlbnRpZmllclwiKXtCKz1cIiAgICBcIit0aGlzLmdldEV4dFN1YmplY3RLZXlJZGVudGlmaWVyKCkrXCJcXG5cIn1lbHNle2lmKEE9PT1cImF1dGhvcml0eUtleUlkZW50aWZpZXJcIil7dmFyIGw9dGhpcy5nZXRFeHRBdXRob3JpdHlLZXlJZGVudGlmaWVyKCk7aWYobC5raWQhPT11bmRlZmluZWQpe0IrPVwiICAgIGtpZD1cIitsLmtpZCtcIlxcblwifX1lbHNle2lmKEE9PT1cImV4dEtleVVzYWdlXCIpe3ZhciB3PXRoaXMuZ2V0RXh0RXh0S2V5VXNhZ2VOYW1lKCk7Qis9XCIgICAgXCIrdy5qb2luKFwiLCBcIikrXCJcXG5cIn1lbHNle2lmKEE9PT1cInN1YmplY3RBbHROYW1lXCIpe3ZhciB0PXRoaXMuZ2V0RXh0U3ViamVjdEFsdE5hbWUyKCk7Qis9XCIgICAgXCIrdCtcIlxcblwifWVsc2V7aWYoQT09PVwiY1JMRGlzdHJpYnV0aW9uUG9pbnRzXCIpe3ZhciB5PXRoaXMuZ2V0RXh0Q1JMRGlzdHJpYnV0aW9uUG9pbnRzVVJJKCk7Qis9XCIgICAgXCIreStcIlxcblwifWVsc2V7aWYoQT09PVwiYXV0aG9yaXR5SW5mb0FjY2Vzc1wiKXt2YXIgcD10aGlzLmdldEV4dEFJQUluZm8oKTtpZihwLm9jc3AhPT11bmRlZmluZWQpe0IrPVwiICAgIG9jc3A6IFwiK3Aub2NzcC5qb2luKFwiLFwiKStcIlxcblwifWlmKHAuY2Fpc3N1ZXIhPT11bmRlZmluZWQpe0IrPVwiICAgIGNhaXNzdWVyOiBcIitwLmNhaXNzdWVyLmpvaW4oXCIsXCIpK1wiXFxuXCJ9fWVsc2V7aWYoQT09PVwiY2VydGlmaWNhdGVQb2xpY2llc1wiKXt2YXIgbz10aGlzLmdldEV4dENlcnRpZmljYXRlUG9saWNpZXMoKTtmb3IodmFyIHE9MDtxPG8ubGVuZ3RoO3ErKyl7aWYob1txXS5pZCE9PXVuZGVmaW5lZCl7Qis9XCIgICAgcG9saWN5IG9pZDogXCIrb1txXS5pZCtcIlxcblwifWlmKG9bcV0uY3BzIT09dW5kZWZpbmVkKXtCKz1cIiAgICBjcHM6IFwiK29bcV0uY3BzK1wiXFxuXCJ9fX19fX19fX19fX19Qis9XCJzaWduYXR1cmUgYWxnb3JpdGhtOiBcIit0aGlzLmdldFNpZ25hdHVyZUFsZ29yaXRobU5hbWUoKStcIlxcblwiO0IrPVwic2lnbmF0dXJlOiBcIit0aGlzLmdldFNpZ25hdHVyZVZhbHVlSGV4KCkuc3Vic3RyKDAsMTYpK1wiLi4uXFxuXCI7cmV0dXJuIEJ9fVg1MDkuaGV4MmRuPWZ1bmN0aW9uKGYsYil7aWYoYj09PXVuZGVmaW5lZCl7Yj0wfWlmKGYuc3Vic3RyKGIsMikhPT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgRE5cIn12YXIgYz1uZXcgQXJyYXkoKTt2YXIgZD1BU04xSEVYLmdldENoaWxkSWR4KGYsYik7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe2MucHVzaChYNTA5LmhleDJyZG4oZixkW2VdKSl9Yz1jLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKFwiL1wiLFwiXFxcXC9cIil9KTtyZXR1cm5cIi9cIitjLmpvaW4oXCIvXCIpfTtYNTA5LmhleDJyZG49ZnVuY3Rpb24oZixiKXtpZihiPT09dW5kZWZpbmVkKXtiPTB9aWYoZi5zdWJzdHIoYiwyKSE9PVwiMzFcIil7dGhyb3dcIm1hbGZvcm1lZCBSRE5cIn12YXIgYz1uZXcgQXJyYXkoKTt2YXIgZD1BU04xSEVYLmdldENoaWxkSWR4KGYsYik7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe2MucHVzaChYNTA5LmhleDJhdHRyVHlwZVZhbHVlKGYsZFtlXSkpfWM9Yy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShcIitcIixcIlxcXFwrXCIpfSk7cmV0dXJuIGMuam9pbihcIitcIil9O1g1MDkuaGV4MmF0dHJUeXBlVmFsdWU9ZnVuY3Rpb24oZCxpKXt2YXIgaj1BU04xSEVYO3ZhciBoPWouZ2V0VjtpZihpPT09dW5kZWZpbmVkKXtpPTB9aWYoZC5zdWJzdHIoaSwyKSE9PVwiMzBcIil7dGhyb3dcIm1hbGZvcm1lZCBhdHRyaWJ1dGUgdHlwZSBhbmQgdmFsdWVcIn12YXIgZz1qLmdldENoaWxkSWR4KGQsaSk7aWYoZy5sZW5ndGghPT0yfHxkLnN1YnN0cihnWzBdLDIpIT09XCIwNlwiKXtcIm1hbGZvcm1lZCBhdHRyaWJ1dGUgdHlwZSBhbmQgdmFsdWVcIn12YXIgYj1oKGQsZ1swXSk7dmFyIGY9S0pVUi5hc24xLkFTTjFVdGlsLm9pZEhleFRvSW50KGIpO3ZhciBlPUtKVVIuYXNuMS54NTA5Lk9JRC5vaWQyYXR5cGUoZik7dmFyIGE9aChkLGdbMV0pO3ZhciBjPWhleHRvcnN0cihhKTtyZXR1cm4gZStcIj1cIitjfTtYNTA5LmdldFB1YmxpY0tleUZyb21DZXJ0SGV4PWZ1bmN0aW9uKGIpe3ZhciBhPW5ldyBYNTA5KCk7YS5yZWFkQ2VydEhleChiKTtyZXR1cm4gYS5nZXRQdWJsaWNLZXkoKX07WDUwOS5nZXRQdWJsaWNLZXlGcm9tQ2VydFBFTT1mdW5jdGlvbihiKXt2YXIgYT1uZXcgWDUwOSgpO2EucmVhZENlcnRQRU0oYik7cmV0dXJuIGEuZ2V0UHVibGljS2V5KCl9O1g1MDkuZ2V0UHVibGljS2V5SW5mb1Byb3BPZkNlcnRQRU09ZnVuY3Rpb24oYyl7dmFyIGU9QVNOMUhFWDt2YXIgZz1lLmdldFZieUxpc3Q7dmFyIGI9e307dmFyIGEsZixkO2IuYWxncGFyYW09bnVsbDthPW5ldyBYNTA5KCk7YS5yZWFkQ2VydFBFTShjKTtmPWEuZ2V0UHVibGljS2V5SGV4KCk7Yi5rZXloZXg9ZyhmLDAsWzFdLFwiMDNcIikuc3Vic3RyKDIpO2IuYWxnb2lkPWcoZiwwLFswLDBdLFwiMDZcIik7aWYoYi5hbGdvaWQ9PT1cIjJhODY0OGNlM2QwMjAxXCIpe2IuYWxncGFyYW09ZyhmLDAsWzAsMV0sXCIwNlwiKX1yZXR1cm4gYn07WDUwOS5LRVlVU0FHRV9OQU1FPVtcImRpZ2l0YWxTaWduYXR1cmVcIixcIm5vblJlcHVkaWF0aW9uXCIsXCJrZXlFbmNpcGhlcm1lbnRcIixcImRhdGFFbmNpcGhlcm1lbnRcIixcImtleUFncmVlbWVudFwiLFwia2V5Q2VydFNpZ25cIixcImNSTFNpZ25cIixcImVuY2lwaGVyT25seVwiLFwiZGVjaXBoZXJPbmx5XCJdO1xuaWYodHlwZW9mIEtKVVI9PVwidW5kZWZpbmVkXCJ8fCFLSlVSKXtLSlVSPXt9fWlmKHR5cGVvZiBLSlVSLmp3cz09XCJ1bmRlZmluZWRcInx8IUtKVVIuandzKXtLSlVSLmp3cz17fX1LSlVSLmp3cy5KV1M9ZnVuY3Rpb24oKXt2YXIgYj1LSlVSLGE9Yi5qd3MuSldTLGM9YS5pc1NhZmVKU09OU3RyaW5nO3RoaXMucGFyc2VKV1M9ZnVuY3Rpb24oZyxqKXtpZigodGhpcy5wYXJzZWRKV1MhPT11bmRlZmluZWQpJiYoanx8KHRoaXMucGFyc2VkSldTLnNpZ3ZhbEghPT11bmRlZmluZWQpKSl7cmV0dXJufXZhciBpPWcubWF0Y2goL14oW14uXSspXFwuKFteLl0rKVxcLihbXi5dKykkLyk7aWYoaT09bnVsbCl7dGhyb3dcIkpXUyBzaWduYXR1cmUgaXMgbm90IGEgZm9ybSBvZiAnSGVhZC5QYXlsb2FkLlNpZ1ZhbHVlJy5cIn12YXIgaz1pWzFdO3ZhciBlPWlbMl07dmFyIGw9aVszXTt2YXIgbj1rK1wiLlwiK2U7dGhpcy5wYXJzZWRKV1M9e307dGhpcy5wYXJzZWRKV1MuaGVhZEI2NFU9azt0aGlzLnBhcnNlZEpXUy5wYXlsb2FkQjY0VT1lO3RoaXMucGFyc2VkSldTLnNpZ3ZhbEI2NFU9bDt0aGlzLnBhcnNlZEpXUy5zaT1uO2lmKCFqKXt2YXIgaD1iNjR1dG9oZXgobCk7dmFyIGY9cGFyc2VCaWdJbnQoaCwxNik7dGhpcy5wYXJzZWRKV1Muc2lndmFsSD1oO3RoaXMucGFyc2VkSldTLnNpZ3ZhbEJJPWZ9dmFyIGQ9YjY0dXRvdXRmOChrKTt2YXIgbT1iNjR1dG91dGY4KGUpO3RoaXMucGFyc2VkSldTLmhlYWRTPWQ7dGhpcy5wYXJzZWRKV1MucGF5bG9hZFM9bTtpZighYyhkLHRoaXMucGFyc2VkSldTLFwiaGVhZFBcIikpe3Rocm93XCJtYWxmb3JtZWQgSlNPTiBzdHJpbmcgZm9yIEpXUyBIZWFkOiBcIitkfX19O0tKVVIuandzLkpXUy5zaWduPWZ1bmN0aW9uKGksdix5LHosYSl7dmFyIHc9S0pVUixtPXcuandzLHE9bS5KV1MsZz1xLnJlYWRTYWZlSlNPTlN0cmluZyxwPXEuaXNTYWZlSlNPTlN0cmluZyxkPXcuY3J5cHRvLGs9ZC5FQ0RTQSxvPWQuTWFjLGM9ZC5TaWduYXR1cmUsdD1KU09OO3ZhciBzLGosbjtpZih0eXBlb2YgdiE9XCJzdHJpbmdcIiYmdHlwZW9mIHYhPVwib2JqZWN0XCIpe3Rocm93XCJzcEhlYWRlciBtdXN0IGJlIEpTT04gc3RyaW5nIG9yIG9iamVjdDogXCIrdn1pZih0eXBlb2Ygdj09XCJvYmplY3RcIil7aj12O3M9dC5zdHJpbmdpZnkoail9aWYodHlwZW9mIHY9PVwic3RyaW5nXCIpe3M9djtpZighcChzKSl7dGhyb3dcIkpXUyBIZWFkIGlzIG5vdCBzYWZlIEpTT04gc3RyaW5nOiBcIitzfWo9ZyhzKX1uPXk7aWYodHlwZW9mIHk9PVwib2JqZWN0XCIpe249dC5zdHJpbmdpZnkoeSl9aWYoKGk9PVwiXCJ8fGk9PW51bGwpJiZqLmFsZyE9PXVuZGVmaW5lZCl7aT1qLmFsZ31pZigoaSE9XCJcIiYmaSE9bnVsbCkmJmouYWxnPT09dW5kZWZpbmVkKXtqLmFsZz1pO3M9dC5zdHJpbmdpZnkoail9aWYoaSE9PWouYWxnKXt0aHJvd1wiYWxnIGFuZCBzSGVhZGVyLmFsZyBkb2Vzbid0IG1hdGNoOiBcIitpK1wiIT1cIitqLmFsZ312YXIgcj1udWxsO2lmKHEuandzYWxnMnNpZ2FsZ1tpXT09PXVuZGVmaW5lZCl7dGhyb3dcInVuc3VwcG9ydGVkIGFsZyBuYW1lOiBcIitpfWVsc2V7cj1xLmp3c2FsZzJzaWdhbGdbaV19dmFyIGU9dXRmOHRvYjY0dShzKTt2YXIgbD11dGY4dG9iNjR1KG4pO3ZhciBiPWUrXCIuXCIrbDt2YXIgeD1cIlwiO2lmKHIuc3Vic3RyKDAsNCk9PVwiSG1hY1wiKXtpZih6PT09dW5kZWZpbmVkKXt0aHJvd1wibWFjIGtleSBzaGFsbCBiZSBzcGVjaWZpZWQgZm9yIEhTKiBhbGdcIn12YXIgaD1uZXcgbyh7YWxnOnIscHJvdjpcImNyeXB0b2pzXCIscGFzczp6fSk7aC51cGRhdGVTdHJpbmcoYik7eD1oLmRvRmluYWwoKX1lbHNle2lmKHIuaW5kZXhPZihcIndpdGhFQ0RTQVwiKSE9LTEpe3ZhciBmPW5ldyBjKHthbGc6cn0pO2YuaW5pdCh6LGEpO2YudXBkYXRlU3RyaW5nKGIpO2hBU04xU2lnPWYuc2lnbigpO3g9S0pVUi5jcnlwdG8uRUNEU0EuYXNuMVNpZ1RvQ29uY2F0U2lnKGhBU04xU2lnKX1lbHNle2lmKHIhPVwibm9uZVwiKXt2YXIgZj1uZXcgYyh7YWxnOnJ9KTtmLmluaXQoeixhKTtmLnVwZGF0ZVN0cmluZyhiKTt4PWYuc2lnbigpfX19dmFyIHU9aGV4dG9iNjR1KHgpO3JldHVybiBiK1wiLlwiK3V9O0tKVVIuandzLkpXUy52ZXJpZnk9ZnVuY3Rpb24odyxCLG4pe3ZhciB4PUtKVVIscT14Lmp3cyx0PXEuSldTLGk9dC5yZWFkU2FmZUpTT05TdHJpbmcsZT14LmNyeXB0byxwPWUuRUNEU0Escz1lLk1hYyxkPWUuU2lnbmF0dXJlLG07aWYodHlwZW9mIFJTQUtleSE9PXVuZGVmaW5lZCl7bT1SU0FLZXl9dmFyIHk9dy5zcGxpdChcIi5cIik7aWYoeS5sZW5ndGghPT0zKXtyZXR1cm4gZmFsc2V9dmFyIGY9eVswXTt2YXIgcj15WzFdO3ZhciBjPWYrXCIuXCIrcjt2YXIgQT1iNjR1dG9oZXgoeVsyXSk7dmFyIGw9aShiNjR1dG91dGY4KHlbMF0pKTt2YXIgaz1udWxsO3ZhciB6PW51bGw7aWYobC5hbGc9PT11bmRlZmluZWQpe3Rocm93XCJhbGdvcml0aG0gbm90IHNwZWNpZmllZCBpbiBoZWFkZXJcIn1lbHNle2s9bC5hbGc7ej1rLnN1YnN0cigwLDIpfWlmKG4hPW51bGwmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PVwiW29iamVjdCBBcnJheV1cIiYmbi5sZW5ndGg+MCl7dmFyIGI9XCI6XCIrbi5qb2luKFwiOlwiKStcIjpcIjtpZihiLmluZGV4T2YoXCI6XCIraytcIjpcIik9PS0xKXt0aHJvd1wiYWxnb3JpdGhtICdcIitrK1wiJyBub3QgYWNjZXB0ZWQgaW4gdGhlIGxpc3RcIn19aWYoayE9XCJub25lXCImJkI9PT1udWxsKXt0aHJvd1wia2V5IHNoYWxsIGJlIHNwZWNpZmllZCB0byB2ZXJpZnkuXCJ9aWYodHlwZW9mIEI9PVwic3RyaW5nXCImJkIuaW5kZXhPZihcIi0tLS0tQkVHSU4gXCIpIT0tMSl7Qj1LRVlVVElMLmdldEtleShCKX1pZih6PT1cIlJTXCJ8fHo9PVwiUFNcIil7aWYoIShCIGluc3RhbmNlb2YgbSkpe3Rocm93XCJrZXkgc2hhbGwgYmUgYSBSU0FLZXkgb2JqIGZvciBSUyogYW5kIFBTKiBhbGdzXCJ9fWlmKHo9PVwiRVNcIil7aWYoIShCIGluc3RhbmNlb2YgcCkpe3Rocm93XCJrZXkgc2hhbGwgYmUgYSBFQ0RTQSBvYmogZm9yIEVTKiBhbGdzXCJ9fWlmKGs9PVwibm9uZVwiKXt9dmFyIHU9bnVsbDtpZih0Lmp3c2FsZzJzaWdhbGdbbC5hbGddPT09dW5kZWZpbmVkKXt0aHJvd1widW5zdXBwb3J0ZWQgYWxnIG5hbWU6IFwiK2t9ZWxzZXt1PXQuandzYWxnMnNpZ2FsZ1trXX1pZih1PT1cIm5vbmVcIil7dGhyb3dcIm5vdCBzdXBwb3J0ZWRcIn1lbHNle2lmKHUuc3Vic3RyKDAsNCk9PVwiSG1hY1wiKXt2YXIgbz1udWxsO2lmKEI9PT11bmRlZmluZWQpe3Rocm93XCJoZXhhZGVjaW1hbCBrZXkgc2hhbGwgYmUgc3BlY2lmaWVkIGZvciBITUFDXCJ9dmFyIGo9bmV3IHMoe2FsZzp1LHBhc3M6Qn0pO2oudXBkYXRlU3RyaW5nKGMpO289ai5kb0ZpbmFsKCk7cmV0dXJuIEE9PW99ZWxzZXtpZih1LmluZGV4T2YoXCJ3aXRoRUNEU0FcIikhPS0xKXt2YXIgaD1udWxsO3RyeXtoPXAuY29uY2F0U2lnVG9BU04xU2lnKEEpfWNhdGNoKHYpe3JldHVybiBmYWxzZX12YXIgZz1uZXcgZCh7YWxnOnV9KTtnLmluaXQoQik7Zy51cGRhdGVTdHJpbmcoYyk7cmV0dXJuIGcudmVyaWZ5KGgpfWVsc2V7dmFyIGc9bmV3IGQoe2FsZzp1fSk7Zy5pbml0KEIpO2cudXBkYXRlU3RyaW5nKGMpO3JldHVybiBnLnZlcmlmeShBKX19fX07S0pVUi5qd3MuSldTLnBhcnNlPWZ1bmN0aW9uKGcpe3ZhciBjPWcuc3BsaXQoXCIuXCIpO3ZhciBiPXt9O3ZhciBmLGUsZDtpZihjLmxlbmd0aCE9MiYmYy5sZW5ndGghPTMpe3Rocm93XCJtYWxmb3JtZWQgc0pXUzogd3JvbmcgbnVtYmVyIG9mICcuJyBzcGxpdHRlZCBlbGVtZW50c1wifWY9Y1swXTtlPWNbMV07aWYoYy5sZW5ndGg9PTMpe2Q9Y1syXX1iLmhlYWRlck9iaj1LSlVSLmp3cy5KV1MucmVhZFNhZmVKU09OU3RyaW5nKGI2NHV0b3V0ZjgoZikpO2IucGF5bG9hZE9iaj1LSlVSLmp3cy5KV1MucmVhZFNhZmVKU09OU3RyaW5nKGI2NHV0b3V0ZjgoZSkpO2IuaGVhZGVyUFA9SlNPTi5zdHJpbmdpZnkoYi5oZWFkZXJPYmosbnVsbCxcIiAgXCIpO2lmKGIucGF5bG9hZE9iaj09bnVsbCl7Yi5wYXlsb2FkUFA9YjY0dXRvdXRmOChlKX1lbHNle2IucGF5bG9hZFBQPUpTT04uc3RyaW5naWZ5KGIucGF5bG9hZE9iaixudWxsLFwiICBcIil9aWYoZCE9PXVuZGVmaW5lZCl7Yi5zaWdIZXg9YjY0dXRvaGV4KGQpfXJldHVybiBifTtLSlVSLmp3cy5KV1MudmVyaWZ5SldUPWZ1bmN0aW9uKGUsbCxyKXt2YXIgZD1LSlVSLGo9ZC5qd3Msbz1qLkpXUyxuPW8ucmVhZFNhZmVKU09OU3RyaW5nLHA9by5pbkFycmF5LGY9by5pbmNsdWRlZEFycmF5O3ZhciBrPWUuc3BsaXQoXCIuXCIpO3ZhciBjPWtbMF07dmFyIGk9a1sxXTt2YXIgcT1jK1wiLlwiK2k7dmFyIG09YjY0dXRvaGV4KGtbMl0pO3ZhciBoPW4oYjY0dXRvdXRmOChjKSk7dmFyIGc9bihiNjR1dG91dGY4KGkpKTtpZihoLmFsZz09PXVuZGVmaW5lZCl7cmV0dXJuIGZhbHNlfWlmKHIuYWxnPT09dW5kZWZpbmVkKXt0aHJvd1wiYWNjZXB0RmllbGQuYWxnIHNoYWxsIGJlIHNwZWNpZmllZFwifWlmKCFwKGguYWxnLHIuYWxnKSl7cmV0dXJuIGZhbHNlfWlmKGcuaXNzIT09dW5kZWZpbmVkJiZ0eXBlb2Ygci5pc3M9PT1cIm9iamVjdFwiKXtpZighcChnLmlzcyxyLmlzcykpe3JldHVybiBmYWxzZX19aWYoZy5zdWIhPT11bmRlZmluZWQmJnR5cGVvZiByLnN1Yj09PVwib2JqZWN0XCIpe2lmKCFwKGcuc3ViLHIuc3ViKSl7cmV0dXJuIGZhbHNlfX1pZihnLmF1ZCE9PXVuZGVmaW5lZCYmdHlwZW9mIHIuYXVkPT09XCJvYmplY3RcIil7aWYodHlwZW9mIGcuYXVkPT1cInN0cmluZ1wiKXtpZighcChnLmF1ZCxyLmF1ZCkpe3JldHVybiBmYWxzZX19ZWxzZXtpZih0eXBlb2YgZy5hdWQ9PVwib2JqZWN0XCIpe2lmKCFmKGcuYXVkLHIuYXVkKSl7cmV0dXJuIGZhbHNlfX19fXZhciBiPWouSW50RGF0ZS5nZXROb3coKTtpZihyLnZlcmlmeUF0IT09dW5kZWZpbmVkJiZ0eXBlb2Ygci52ZXJpZnlBdD09PVwibnVtYmVyXCIpe2I9ci52ZXJpZnlBdH1pZihyLmdyYWNlUGVyaW9kPT09dW5kZWZpbmVkfHx0eXBlb2Ygci5ncmFjZVBlcmlvZCE9PVwibnVtYmVyXCIpe3IuZ3JhY2VQZXJpb2Q9MH1pZihnLmV4cCE9PXVuZGVmaW5lZCYmdHlwZW9mIGcuZXhwPT1cIm51bWJlclwiKXtpZihnLmV4cCtyLmdyYWNlUGVyaW9kPGIpe3JldHVybiBmYWxzZX19aWYoZy5uYmYhPT11bmRlZmluZWQmJnR5cGVvZiBnLm5iZj09XCJudW1iZXJcIil7aWYoYjxnLm5iZi1yLmdyYWNlUGVyaW9kKXtyZXR1cm4gZmFsc2V9fWlmKGcuaWF0IT09dW5kZWZpbmVkJiZ0eXBlb2YgZy5pYXQ9PVwibnVtYmVyXCIpe2lmKGI8Zy5pYXQtci5ncmFjZVBlcmlvZCl7cmV0dXJuIGZhbHNlfX1pZihnLmp0aSE9PXVuZGVmaW5lZCYmci5qdGkhPT11bmRlZmluZWQpe2lmKGcuanRpIT09ci5qdGkpe3JldHVybiBmYWxzZX19aWYoIW8udmVyaWZ5KGUsbCxyLmFsZykpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX07S0pVUi5qd3MuSldTLmluY2x1ZGVkQXJyYXk9ZnVuY3Rpb24oYixhKXt2YXIgYz1LSlVSLmp3cy5KV1MuaW5BcnJheTtpZihiPT09bnVsbCl7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBiIT09XCJvYmplY3RcIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBiLmxlbmd0aCE9PVwibnVtYmVyXCIpe3JldHVybiBmYWxzZX1mb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7aWYoIWMoYltkXSxhKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX07S0pVUi5qd3MuSldTLmluQXJyYXk9ZnVuY3Rpb24oZCxiKXtpZihiPT09bnVsbCl7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBiIT09XCJvYmplY3RcIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBiLmxlbmd0aCE9PVwibnVtYmVyXCIpe3JldHVybiBmYWxzZX1mb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7aWYoYltjXT09ZCl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX07S0pVUi5qd3MuSldTLmp3c2FsZzJzaWdhbGc9e0hTMjU2OlwiSG1hY1NIQTI1NlwiLEhTMzg0OlwiSG1hY1NIQTM4NFwiLEhTNTEyOlwiSG1hY1NIQTUxMlwiLFJTMjU2OlwiU0hBMjU2d2l0aFJTQVwiLFJTMzg0OlwiU0hBMzg0d2l0aFJTQVwiLFJTNTEyOlwiU0hBNTEyd2l0aFJTQVwiLEVTMjU2OlwiU0hBMjU2d2l0aEVDRFNBXCIsRVMzODQ6XCJTSEEzODR3aXRoRUNEU0FcIixQUzI1NjpcIlNIQTI1NndpdGhSU0FhbmRNR0YxXCIsUFMzODQ6XCJTSEEzODR3aXRoUlNBYW5kTUdGMVwiLFBTNTEyOlwiU0hBNTEyd2l0aFJTQWFuZE1HRjFcIixub25lOlwibm9uZVwiLH07S0pVUi5qd3MuSldTLmlzU2FmZUpTT05TdHJpbmc9ZnVuY3Rpb24oYyxiLGQpe3ZhciBlPW51bGw7dHJ5e2U9anNvblBhcnNlKGMpO2lmKHR5cGVvZiBlIT1cIm9iamVjdFwiKXtyZXR1cm4gMH1pZihlLmNvbnN0cnVjdG9yPT09QXJyYXkpe3JldHVybiAwfWlmKGIpe2JbZF09ZX1yZXR1cm4gMX1jYXRjaChhKXtyZXR1cm4gMH19O0tKVVIuandzLkpXUy5yZWFkU2FmZUpTT05TdHJpbmc9ZnVuY3Rpb24oYil7dmFyIGM9bnVsbDt0cnl7Yz1qc29uUGFyc2UoYik7aWYodHlwZW9mIGMhPVwib2JqZWN0XCIpe3JldHVybiBudWxsfWlmKGMuY29uc3RydWN0b3I9PT1BcnJheSl7cmV0dXJuIG51bGx9cmV0dXJuIGN9Y2F0Y2goYSl7cmV0dXJuIG51bGx9fTtLSlVSLmp3cy5KV1MuZ2V0RW5jb2RlZFNpZ25hdHVyZVZhbHVlRnJvbUpXUz1mdW5jdGlvbihiKXt2YXIgYT1iLm1hdGNoKC9eW14uXStcXC5bXi5dK1xcLihbXi5dKykkLyk7aWYoYT09bnVsbCl7dGhyb3dcIkpXUyBzaWduYXR1cmUgaXMgbm90IGEgZm9ybSBvZiAnSGVhZC5QYXlsb2FkLlNpZ1ZhbHVlJy5cIn1yZXR1cm4gYVsxXX07S0pVUi5qd3MuSldTLmdldEpXS3RodW1icHJpbnQ9ZnVuY3Rpb24oZCl7aWYoZC5rdHkhPT1cIlJTQVwiJiZkLmt0eSE9PVwiRUNcIiYmZC5rdHkhPT1cIm9jdFwiKXt0aHJvd1widW5zdXBwb3J0ZWQgYWxnb3JpdGhtIGZvciBKV0sgVGh1bXByaW50XCJ9dmFyIGE9XCJ7XCI7aWYoZC5rdHk9PT1cIlJTQVwiKXtpZih0eXBlb2YgZC5uIT1cInN0cmluZ1wifHx0eXBlb2YgZC5lIT1cInN0cmluZ1wiKXt0aHJvd1wid3JvbmcgbiBhbmQgZSB2YWx1ZSBmb3IgUlNBIGtleVwifWErPSdcImVcIjpcIicrZC5lKydcIiwnO2ErPSdcImt0eVwiOlwiJytkLmt0eSsnXCIsJzthKz0nXCJuXCI6XCInK2QubisnXCJ9J31lbHNle2lmKGQua3R5PT09XCJFQ1wiKXtpZih0eXBlb2YgZC5jcnYhPVwic3RyaW5nXCJ8fHR5cGVvZiBkLnghPVwic3RyaW5nXCJ8fHR5cGVvZiBkLnkhPVwic3RyaW5nXCIpe3Rocm93XCJ3cm9uZyBjcnYsIHggYW5kIHkgdmFsdWUgZm9yIEVDIGtleVwifWErPSdcImNydlwiOlwiJytkLmNydisnXCIsJzthKz0nXCJrdHlcIjpcIicrZC5rdHkrJ1wiLCc7YSs9J1wieFwiOlwiJytkLngrJ1wiLCc7YSs9J1wieVwiOlwiJytkLnkrJ1wifSd9ZWxzZXtpZihkLmt0eT09PVwib2N0XCIpe2lmKHR5cGVvZiBkLmshPVwic3RyaW5nXCIpe3Rocm93XCJ3cm9uZyBrIHZhbHVlIGZvciBvY3Qoc3ltbWV0cmljKSBrZXlcIn1hKz0nXCJrdHlcIjpcIicrZC5rdHkrJ1wiLCc7YSs9J1wia1wiOlwiJytkLmsrJ1wifSd9fX12YXIgYj1yc3RydG9oZXgoYSk7dmFyIGM9S0pVUi5jcnlwdG8uVXRpbC5oYXNoSGV4KGIsXCJzaGEyNTZcIik7dmFyIGU9aGV4dG9iNjR1KGMpO3JldHVybiBlfTtLSlVSLmp3cy5JbnREYXRlPXt9O0tKVVIuandzLkludERhdGUuZ2V0PWZ1bmN0aW9uKGMpe3ZhciBiPUtKVVIuandzLkludERhdGUsZD1iLmdldE5vdyxhPWIuZ2V0WnVsdTtpZihjPT1cIm5vd1wiKXtyZXR1cm4gZCgpfWVsc2V7aWYoYz09XCJub3cgKyAxaG91clwiKXtyZXR1cm4gZCgpKzYwKjYwfWVsc2V7aWYoYz09XCJub3cgKyAxZGF5XCIpe3JldHVybiBkKCkrNjAqNjAqMjR9ZWxzZXtpZihjPT1cIm5vdyArIDFtb250aFwiKXtyZXR1cm4gZCgpKzYwKjYwKjI0KjMwfWVsc2V7aWYoYz09XCJub3cgKyAxeWVhclwiKXtyZXR1cm4gZCgpKzYwKjYwKjI0KjM2NX1lbHNle2lmKGMubWF0Y2goL1okLykpe3JldHVybiBhKGMpfWVsc2V7aWYoYy5tYXRjaCgvXlswLTldKyQvKSl7cmV0dXJuIHBhcnNlSW50KGMpfX19fX19fXRocm93XCJ1bnN1cHBvcnRlZCBmb3JtYXQ6IFwiK2N9O0tKVVIuandzLkludERhdGUuZ2V0WnVsdT1mdW5jdGlvbihhKXtyZXR1cm4genVsdXRvc2VjKGEpfTtLSlVSLmp3cy5JbnREYXRlLmdldE5vdz1mdW5jdGlvbigpe3ZhciBhPX5+KG5ldyBEYXRlKCkvMTAwMCk7cmV0dXJuIGF9O0tKVVIuandzLkludERhdGUuaW50RGF0ZTJVVENTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IERhdGUoYSoxMDAwKTtyZXR1cm4gYi50b1VUQ1N0cmluZygpfTtLSlVSLmp3cy5JbnREYXRlLmludERhdGUyWnVsdT1mdW5jdGlvbihlKXt2YXIgaT1uZXcgRGF0ZShlKjEwMDApLGg9KFwiMDAwMFwiK2kuZ2V0VVRDRnVsbFllYXIoKSkuc2xpY2UoLTQpLGc9KFwiMDBcIisoaS5nZXRVVENNb250aCgpKzEpKS5zbGljZSgtMiksYj0oXCIwMFwiK2kuZ2V0VVRDRGF0ZSgpKS5zbGljZSgtMiksYT0oXCIwMFwiK2kuZ2V0VVRDSG91cnMoKSkuc2xpY2UoLTIpLGM9KFwiMDBcIitpLmdldFVUQ01pbnV0ZXMoKSkuc2xpY2UoLTIpLGY9KFwiMDBcIitpLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIpO3JldHVybiBoK2crYithK2MrZitcIlpcIn07XG5leHBvcnRzLlNlY3VyZVJhbmRvbSA9IFNlY3VyZVJhbmRvbTtcclxuZXhwb3J0cy5ybmdfc2VlZF90aW1lID0gcm5nX3NlZWRfdGltZTtcclxuXHJcbmV4cG9ydHMuQmlnSW50ZWdlciA9IEJpZ0ludGVnZXI7XHJcbmV4cG9ydHMuUlNBS2V5ID0gUlNBS2V5O1xyXG5leHBvcnRzLkVDRFNBID0gS0pVUi5jcnlwdG8uRUNEU0E7XHJcbmV4cG9ydHMuRFNBID0gS0pVUi5jcnlwdG8uRFNBO1xyXG5leHBvcnRzLlNpZ25hdHVyZSA9IEtKVVIuY3J5cHRvLlNpZ25hdHVyZTtcclxuZXhwb3J0cy5NZXNzYWdlRGlnZXN0ID0gS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdDtcclxuZXhwb3J0cy5NYWMgPSBLSlVSLmNyeXB0by5NYWM7XHJcbmV4cG9ydHMuQ2lwaGVyID0gS0pVUi5jcnlwdG8uQ2lwaGVyO1xyXG5leHBvcnRzLktFWVVUSUwgPSBLRVlVVElMO1xyXG5leHBvcnRzLkFTTjFIRVggPSBBU04xSEVYO1xyXG5leHBvcnRzLlg1MDkgPSBYNTA5O1xyXG5leHBvcnRzLkNyeXB0b0pTID0gQ3J5cHRvSlM7XHJcblxyXG4vLyBleHQvYmFzZTY0LmpzXHJcbmV4cG9ydHMuYjY0dG9oZXggPSBiNjR0b2hleDtcclxuZXhwb3J0cy5iNjR0b0JBID0gYjY0dG9CQTtcclxuXHJcbi8vIGJhc2U2NHguanNcclxuZXhwb3J0cy5zdG9CQSA9IHN0b0JBO1xyXG5leHBvcnRzLkJBdG9zID0gQkF0b3M7XHJcbmV4cG9ydHMuQkF0b2hleCA9IEJBdG9oZXg7XHJcbmV4cG9ydHMuc3RvaGV4ID0gc3RvaGV4O1xyXG5leHBvcnRzLnN0b2I2NCA9IHN0b2I2NDtcclxuZXhwb3J0cy5zdG9iNjR1ID0gc3RvYjY0dTtcclxuZXhwb3J0cy5iNjR1dG9zID0gYjY0dXRvcztcclxuZXhwb3J0cy5iNjR0b2I2NHUgPSBiNjR0b2I2NHU7XHJcbmV4cG9ydHMuYjY0dXRvYjY0ID0gYjY0dXRvYjY0O1xyXG5leHBvcnRzLmhleDJiNjQgPSBoZXgyYjY0O1xyXG5leHBvcnRzLmhleHRvYjY0dSA9IGhleHRvYjY0dTtcclxuZXhwb3J0cy5iNjR1dG9oZXggPSBiNjR1dG9oZXg7XHJcbmV4cG9ydHMudXRmOHRvYjY0dSA9IHV0Zjh0b2I2NHU7XHJcbmV4cG9ydHMuYjY0dXRvdXRmOCA9IGI2NHV0b3V0Zjg7XHJcbmV4cG9ydHMudXRmOHRvYjY0ID0gdXRmOHRvYjY0O1xyXG5leHBvcnRzLmI2NHRvdXRmOCA9IGI2NHRvdXRmODtcclxuZXhwb3J0cy51dGY4dG9oZXggPSB1dGY4dG9oZXg7XHJcbmV4cG9ydHMuaGV4dG91dGY4ID0gaGV4dG91dGY4O1xyXG5leHBvcnRzLmhleHRvcnN0ciA9IGhleHRvcnN0cjtcclxuZXhwb3J0cy5yc3RydG9oZXggPSByc3RydG9oZXg7XHJcbmV4cG9ydHMuaGV4dG9iNjQgPSBoZXh0b2I2NDtcclxuZXhwb3J0cy5oZXh0b2I2NG5sID0gaGV4dG9iNjRubDtcclxuZXhwb3J0cy5iNjRubHRvaGV4ID0gYjY0bmx0b2hleDtcclxuZXhwb3J0cy5oZXh0b3BlbSA9IGhleHRvcGVtO1xyXG5leHBvcnRzLnBlbXRvaGV4ID0gcGVtdG9oZXg7XHJcbmV4cG9ydHMuaGV4dG9BcnJheUJ1ZmZlciA9IGhleHRvQXJyYXlCdWZmZXI7XHJcbmV4cG9ydHMuQXJyYXlCdWZmZXJ0b2hleCA9IEFycmF5QnVmZmVydG9oZXg7XHJcbmV4cG9ydHMuenVsdXRvbXNlYyA9IHp1bHV0b21zZWM7XHJcbmV4cG9ydHMuenVsdXRvc2VjID0genVsdXRvc2VjO1xyXG5leHBvcnRzLnp1bHV0b2RhdGUgPSB6dWx1dG9kYXRlO1xyXG5leHBvcnRzLmRhdGV0b3p1bHUgPSBkYXRldG96dWx1O1xyXG5leHBvcnRzLnVyaWNtcHRvaGV4ID0gdXJpY21wdG9oZXg7XHJcbmV4cG9ydHMuaGV4dG91cmljbXAgPSBoZXh0b3VyaWNtcDtcclxuZXhwb3J0cy5pcHY2dG9oZXggPSBpcHY2dG9oZXg7XHJcbmV4cG9ydHMuaGV4dG9pcHY2ID0gaGV4dG9pcHY2O1xyXG5leHBvcnRzLmhleHRvaXAgPSBoZXh0b2lwO1xyXG5leHBvcnRzLmlwdG9oZXggPSBpcHRvaGV4O1xyXG5leHBvcnRzLmVuY29kZVVSSUNvbXBvbmVudEFsbCA9IGVuY29kZVVSSUNvbXBvbmVudEFsbDtcclxuZXhwb3J0cy5uZXdsaW5lX3RvVW5peCA9IG5ld2xpbmVfdG9Vbml4O1xyXG5leHBvcnRzLm5ld2xpbmVfdG9Eb3MgPSBuZXdsaW5lX3RvRG9zO1xyXG5leHBvcnRzLmhleHRvcG9zaGV4ID0gaGV4dG9wb3NoZXg7XHJcbmV4cG9ydHMuaW50YXJ5c3RydG9oZXggPSBpbnRhcnlzdHJ0b2hleDtcclxuZXhwb3J0cy5zdHJkaWZmaWR4ID0gc3RyZGlmZmlkeDtcclxuXHJcbi8vIG5hbWUgc3BhY2VzXHJcbmV4cG9ydHMuS0pVUiA9IEtKVVI7XHJcbmV4cG9ydHMuY3J5cHRvID0gS0pVUi5jcnlwdG87XHJcbmV4cG9ydHMuYXNuMSA9IEtKVVIuYXNuMTtcclxuZXhwb3J0cy5qd3MgPSBLSlVSLmp3cztcclxuZXhwb3J0cy5sYW5nID0gS0pVUi5sYW5nO1xyXG5cclxuXHJcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9zaGltXCIpO1xuXG5yZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlXCIpO1xuXG5pZiAoZ2xvYmFsLl9iYWJlbFBvbHlmaWxsKSB7XG4gIHRocm93IG5ldyBFcnJvcihcIm9ubHkgb25lIGluc3RhbmNlIG9mIGJhYmVsLXBvbHlmaWxsIGlzIGFsbG93ZWRcIik7XG59XG5nbG9iYWwuX2JhYmVsUG9seWZpbGwgPSB0cnVlO1xuXG52YXIgREVGSU5FX1BST1BFUlRZID0gXCJkZWZpbmVQcm9wZXJ0eVwiO1xuZnVuY3Rpb24gZGVmaW5lKE8sIGtleSwgdmFsdWUpIHtcbiAgT1trZXldIHx8IE9iamVjdFtERUZJTkVfUFJPUEVSVFldKE8sIGtleSwge1xuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmRlZmluZShTdHJpbmcucHJvdG90eXBlLCBcInBhZExlZnRcIiwgXCJcIi5wYWRTdGFydCk7XG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRSaWdodFwiLCBcIlwiLnBhZEVuZCk7XG5cblwicG9wLHJldmVyc2Usc2hpZnQsa2V5cyx2YWx1ZXMsZW50cmllcyxpbmRleE9mLGV2ZXJ5LHNvbWUsZm9yRWFjaCxtYXAsZmlsdGVyLGZpbmQsZmluZEluZGV4LGluY2x1ZGVzLGpvaW4sc2xpY2UsY29uY2F0LHB1c2gsc3BsaWNlLHVuc2hpZnQsc29ydCxsYXN0SW5kZXhPZixyZWR1Y2UscmVkdWNlUmlnaHQsY29weVdpdGhpbixmaWxsXCIuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBbXVtrZXldICYmIGRlZmluZShBcnJheSwga2V5LCBGdW5jdGlvbi5jYWxsLmJpbmQoW11ba2V5XSkpO1xufSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9tYXN0ZXIvTElDRU5TRSBmaWxlLiBBblxuICogYWRkaXRpb25hbCBncmFudCBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluXG4gKiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuIShmdW5jdGlvbihnbG9iYWwpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuICB2YXIgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7XG4gIGlmIChydW50aW1lKSB7XG4gICAgaWYgKGluTW9kdWxlKSB7XG4gICAgICAvLyBJZiByZWdlbmVyYXRvclJ1bnRpbWUgaXMgZGVmaW5lZCBnbG9iYWxseSBhbmQgd2UncmUgaW4gYSBtb2R1bGUsXG4gICAgICAvLyBtYWtlIHRoZSBleHBvcnRzIG9iamVjdCBpZGVudGljYWwgdG8gcmVnZW5lcmF0b3JSdW50aW1lLlxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuICAgIH1cbiAgICAvLyBEb24ndCBib3RoZXIgZXZhbHVhdGluZyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgaWYgdGhlIHJ1bnRpbWUgd2FzXG4gICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuICAvLyBtb2R1bGUuZXhwb3J0cyAoaWYgd2UncmUgaW4gYSBtb2R1bGUpIG9yIGEgbmV3LCBlbXB0eSBvYmplY3QuXG4gIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9O1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIHJ1bnRpbWUud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIHJ1bnRpbWUuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG4gICAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcbiAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuICAgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2VcbiAgICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG4gICAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcbiAgICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuICAgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwucHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBnbG9iYWwucHJvY2Vzcy5kb21haW4pIHtcbiAgICAgIGludm9rZSA9IGdsb2JhbC5wcm9jZXNzLmRvbWFpbi5iaW5kKGludm9rZSk7XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgcnVudGltZS5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpXG4gICAgKTtcblxuICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBydW50aW1lLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcbn0pKFxuICAvLyBBbW9uZyB0aGUgdmFyaW91cyB0cmlja3MgZm9yIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsXG4gIC8vIG9iamVjdCwgdGhpcyBzZWVtcyB0byBiZSB0aGUgbW9zdCByZWxpYWJsZSB0ZWNobmlxdWUgdGhhdCBkb2VzIG5vdFxuICAvLyB1c2UgaW5kaXJlY3QgZXZhbCAod2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kpLlxuICB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDpcbiAgdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6XG4gIHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHRoaXNcbik7XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8XG4gICAgICByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMikge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gNClcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDEpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPj4gMilcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG4gIHJldHVybiBsb29rdXBbbnVtID4+IDE4ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gJiAweDNGXVxufVxuXG5mdW5jdGlvbiBlbmNvZGVDaHVuayAodWludDgsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHRtcFxuICB2YXIgb3V0cHV0ID0gW11cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IDMpIHtcbiAgICB0bXAgPVxuICAgICAgKCh1aW50OFtpXSA8PCAxNikgJiAweEZGMDAwMCkgK1xuICAgICAgKCh1aW50OFtpICsgMV0gPDwgOCkgJiAweEZGMDApICtcbiAgICAgICh1aW50OFtpICsgMl0gJiAweEZGKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVuID0gdWludDgubGVuZ3RoXG4gIHZhciBleHRyYUJ5dGVzID0gbGVuICUgMyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuICB2YXIgcGFydHMgPSBbXVxuICB2YXIgbWF4Q2h1bmtMZW5ndGggPSAxNjM4MyAvLyBtdXN0IGJlIG11bHRpcGxlIG9mIDNcblxuICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4yID0gbGVuIC0gZXh0cmFCeXRlczsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKFxuICAgICAgdWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKVxuICAgICkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAyXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdICtcbiAgICAgICc9PSdcbiAgICApXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArIHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMTBdICtcbiAgICAgIGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgMikgJiAweDNGXSArXG4gICAgICAnPSdcbiAgICApXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG4vKlxuICogRXhwb3J0IGtNYXhMZW5ndGggYWZ0ZXIgdHlwZWQgYXJyYXkgc3VwcG9ydCBpcyBkZXRlcm1pbmVkLlxuICovXG5leHBvcnRzLmtNYXhMZW5ndGggPSBrTWF4TGVuZ3RoKClcblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyICYmIC8vIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkXG4gICAgICAgIHR5cGVvZiBhcnIuc3ViYXJyYXkgPT09ICdmdW5jdGlvbicgJiYgLy8gY2hyb21lIDktMTAgbGFjayBgc3ViYXJyYXlgXG4gICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHtcbiAgcmV0dXJuIEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gICAgPyAweDdmZmZmZmZmXG4gICAgOiAweDNmZmZmZmZmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7XG4gIGlmIChrTWF4TGVuZ3RoKCkgPCBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgnKVxuICB9XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIGlmICh0aGF0ID09PSBudWxsKSB7XG4gICAgICB0aGF0ID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gICAgfVxuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZSh0aGlzLCBhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20odGhpcywgYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG4vLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi5cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmXG4gICAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgICAvLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jICh0aGF0LCBzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhudWxsLCBzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgYXJyYXkuYnl0ZUxlbmd0aCAvLyB0aGlzIHRocm93cyBpZiBgYXJyYXlgIGlzIG5vdCBhIHZhbGlkIEFycmF5QnVmZmVyXG5cbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBhcnJheVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbUFycmF5TGlrZSh0aGF0LCBhcnJheSlcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5sZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoQXJyYXlCdWZmZXIuaXNWaWV3KHN0cmluZykgfHwgc3RyaW5nIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmdcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgYW5kIGBpcy1idWZmZXJgIChpbiBTYWZhcmkgNS03KSB0byBkZXRlY3Rcbi8vIEJ1ZmZlciBpbnN0YW5jZXMuXG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoIHwgMFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICB2YXIgeSA9IGVuZCAtIHN0YXJ0XG4gIHZhciBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICB2YXIgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChpc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmXG4gICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0c1xuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWZcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnRcbiAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IHV0ZjhUb0J5dGVzKG5ldyBCdWZmZXIodmFsLCBlbmNvZGluZykudG9TdHJpbmcoKSlcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXFwvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHN0cmluZ3RyaW0gKHN0cikge1xuICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlJlZ0V4cC5lc2NhcGU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgbXNnKSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ251bWJlcicgJiYgY29mKGl0KSAhPSAnTnVtYmVyJykgdGhyb3cgVHlwZUVycm9yKG1zZyk7XG4gIHJldHVybiAraXQ7XG59O1xuIiwiLy8gMjIuMS4zLjMxIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxudmFyIFVOU0NPUEFCTEVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbmlmIChBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHJlcXVpcmUoJy4vX2hpZGUnKShBcnJheVByb3RvLCBVTlNDT1BBQkxFUywge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gMjIuMS4zLjMgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCwgZW5kID0gdGhpcy5sZW5ndGgpXG4ndXNlIHN0cmljdCc7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gW10uY29weVdpdGhpbiB8fCBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCAvKiA9IDAgKi8sIHN0YXJ0IC8qID0gMCwgZW5kID0gQGxlbmd0aCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICB2YXIgbGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgdG8gPSB0b0Fic29sdXRlSW5kZXgodGFyZ2V0LCBsZW4pO1xuICB2YXIgZnJvbSA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuKTtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgY291bnQgPSBNYXRoLm1pbigoZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW4pKSAtIGZyb20sIGxlbiAtIHRvKTtcbiAgdmFyIGluYyA9IDE7XG4gIGlmIChmcm9tIDwgdG8gJiYgdG8gPCBmcm9tICsgY291bnQpIHtcbiAgICBpbmMgPSAtMTtcbiAgICBmcm9tICs9IGNvdW50IC0gMTtcbiAgICB0byArPSBjb3VudCAtIDE7XG4gIH1cbiAgd2hpbGUgKGNvdW50LS0gPiAwKSB7XG4gICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgIGVsc2UgZGVsZXRlIE9bdG9dO1xuICAgIHRvICs9IGluYztcbiAgICBmcm9tICs9IGluYztcbiAgfSByZXR1cm4gTztcbn07XG4iLCIvLyAyMi4xLjMuNiBBcnJheS5wcm90b3R5cGUuZmlsbCh2YWx1ZSwgc3RhcnQgPSAwLCBlbmQgPSB0aGlzLmxlbmd0aClcbid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiAsIHN0YXJ0ID0gMCwgZW5kID0gQGxlbmd0aCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgbGVuZ3RoKTtcbiAgdmFyIGVuZCA9IGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgZW5kUG9zID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpO1xuICB3aGlsZSAoZW5kUG9zID4gaW5kZXgpIE9baW5kZXgrK10gPSB2YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yT2YoaXRlciwgZmFsc2UsIHJlc3VsdC5wdXNoLCByZXN1bHQsIElURVJBVE9SKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcbiIsIi8vIDAgLT4gQXJyYXkjZm9yRWFjaFxuLy8gMSAtPiBBcnJheSNtYXBcbi8vIDIgLT4gQXJyYXkjZmlsdGVyXG4vLyAzIC0+IEFycmF5I3NvbWVcbi8vIDQgLT4gQXJyYXkjZXZlcnlcbi8vIDUgLT4gQXJyYXkjZmluZFxuLy8gNiAtPiBBcnJheSNmaW5kSW5kZXhcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhc2MgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVFlQRSwgJGNyZWF0ZSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIE5PX0hPTEVTID0gVFlQRSA9PSA1IHx8IElTX0ZJTkRfSU5ERVg7XG4gIHZhciBjcmVhdGUgPSAkY3JlYXRlIHx8IGFzYztcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoc2VsZi5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbCwgcmVzO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsID0gc2VsZltpbmRleF07XG4gICAgICByZXMgPSBmKHZhbCwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgcmVzdWx0W2luZGV4XSA9IHJlczsgICAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzKSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsOyAgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcmVzdWx0LnB1c2godmFsKTsgICAgICAgIC8vIGZpbHRlclxuICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7IC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiByZXN1bHQ7XG4gIH07XG59O1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYUxlbiwgbWVtbywgaXNSaWdodCkge1xuICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gaXNSaWdodCA/IGxlbmd0aCAtIDEgOiAwO1xuICB2YXIgaSA9IGlzUmlnaHQgPyAtMSA6IDE7XG4gIGlmIChhTGVuIDwgMikgZm9yICg7Oykge1xuICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGV4ICs9IGk7XG4gICAgaWYgKGlzUmlnaHQgPyBpbmRleCA8IDAgOiBsZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIH1cbiAgfVxuICBmb3IgKDtpc1JpZ2h0ID8gaW5kZXggPj0gMCA6IGxlbmd0aCA+IGluZGV4OyBpbmRleCArPSBpKSBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gIH1cbiAgcmV0dXJuIG1lbW87XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbCkpIHtcbiAgICBDID0gb3JpZ2luYWwuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQztcbn07XG4iLCIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbCkpKGxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGFycmF5U2xpY2UgPSBbXS5zbGljZTtcbnZhciBmYWN0b3JpZXMgPSB7fTtcblxudmFyIGNvbnN0cnVjdCA9IGZ1bmN0aW9uIChGLCBsZW4sIGFyZ3MpIHtcbiAgaWYgKCEobGVuIGluIGZhY3RvcmllcykpIHtcbiAgICBmb3IgKHZhciBuID0gW10sIGkgPSAwOyBpIDwgbGVuOyBpKyspIG5baV0gPSAnYVsnICsgaSArICddJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICBmYWN0b3JpZXNbbGVuXSA9IEZ1bmN0aW9uKCdGLGEnLCAncmV0dXJuIG5ldyBGKCcgKyBuLmpvaW4oJywnKSArICcpJyk7XG4gIH0gcmV0dXJuIGZhY3Rvcmllc1tsZW5dKEYsIGFyZ3MpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5iaW5kIHx8IGZ1bmN0aW9uIGJpbmQodGhhdCAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgdmFyIGZuID0gYUZ1bmN0aW9uKHRoaXMpO1xuICB2YXIgcGFydEFyZ3MgPSBhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgdmFyIGJvdW5kID0gZnVuY3Rpb24gKC8qIGFyZ3MuLi4gKi8pIHtcbiAgICB2YXIgYXJncyA9IHBhcnRBcmdzLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBib3VuZCA/IGNvbnN0cnVjdChmbiwgYXJncy5sZW5ndGgsIGFyZ3MpIDogaW52b2tlKGZuLCBhcmdzLCB0aGF0KTtcbiAgfTtcbiAgaWYgKGlzT2JqZWN0KGZuLnByb3RvdHlwZSkpIGJvdW5kLnByb3RvdHlwZSA9IGZuLnByb3RvdHlwZTtcbiAgcmV0dXJuIGJvdW5kO1xufTtcbiIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciAkaXRlckRlZmluZSA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBmYXN0S2V5ID0gcmVxdWlyZSgnLi9fbWV0YScpLmZhc3RLZXk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgU0laRSA9IERFU0NSSVBUT1JTID8gJ19zJyA6ICdzaXplJztcblxudmFyIGdldEVudHJ5ID0gZnVuY3Rpb24gKHRoYXQsIGtleSkge1xuICAvLyBmYXN0IGNhc2VcbiAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpO1xuICB2YXIgZW50cnk7XG4gIGlmIChpbmRleCAhPT0gJ0YnKSByZXR1cm4gdGhhdC5faVtpbmRleF07XG4gIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuICBmb3IgKGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubikge1xuICAgIGlmIChlbnRyeS5rID09IGtleSkgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGNyZWF0ZShudWxsKTsgLy8gaW5kZXhcbiAgICAgIHRoYXQuX2YgPSB1bmRlZmluZWQ7ICAgIC8vIGZpcnN0IGVudHJ5XG4gICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAgICAvLyBsYXN0IGVudHJ5XG4gICAgICB0aGF0W1NJWkVdID0gMDsgICAgICAgICAvLyBzaXplXG4gICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG4gICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICAgIGZvciAodmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKSwgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubikge1xuICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuICAgICAgICAgIGlmIChlbnRyeS5wKSBlbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuICAgICAgICB9XG4gICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGF0W1NJWkVdID0gMDtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSk7XG4gICAgICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkubjtcbiAgICAgICAgICB2YXIgcHJldiA9IGVudHJ5LnA7XG4gICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKHByZXYpIHByZXYubiA9IG5leHQ7XG4gICAgICAgICAgaWYgKG5leHQpIG5leHQucCA9IHByZXY7XG4gICAgICAgICAgaWYgKHRoYXQuX2YgPT0gZW50cnkpIHRoYXQuX2YgPSBuZXh0O1xuICAgICAgICAgIGlmICh0aGF0Ll9sID09IGVudHJ5KSB0aGF0Ll9sID0gcHJldjtcbiAgICAgICAgICB0aGF0W1NJWkVdLS07XG4gICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdmFsaWRhdGUodGhpcywgTkFNRSk7XG4gICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICAgICAgdmFyIGVudHJ5O1xuICAgICAgICB3aGlsZSAoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKSB7XG4gICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTtcbiAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTkFNRSksIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHRoaXMsIE5BTUUpW1NJWkVdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBkZWY6IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICB2YXIgcHJldiwgaW5kZXg7XG4gICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBlbnRyeS52ID0gdmFsdWU7XG4gICAgLy8gY3JlYXRlIG5ldyBlbnRyeVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGF0Ll9sID0gZW50cnkgPSB7XG4gICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleFxuICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG4gICAgICAgIHY6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnlcbiAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcbiAgICAgICAgcjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHJlbW92ZWRcbiAgICAgIH07XG4gICAgICBpZiAoIXRoYXQuX2YpIHRoYXQuX2YgPSBlbnRyeTtcbiAgICAgIGlmIChwcmV2KSBwcmV2Lm4gPSBlbnRyeTtcbiAgICAgIHRoYXRbU0laRV0rKztcbiAgICAgIC8vIGFkZCB0byBpbmRleFxuICAgICAgaWYgKGluZGV4ICE9PSAnRicpIHRoYXQuX2lbaW5kZXhdID0gZW50cnk7XG4gICAgfSByZXR1cm4gdGhhdDtcbiAgfSxcbiAgZ2V0RW50cnk6IGdldEVudHJ5LFxuICBzZXRTdHJvbmc6IGZ1bmN0aW9uIChDLCBOQU1FLCBJU19NQVApIHtcbiAgICAvLyBhZGQgLmtleXMsIC52YWx1ZXMsIC5lbnRyaWVzLCBbQEBpdGVyYXRvcl1cbiAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG4gICAgJGl0ZXJEZWZpbmUoQywgTkFNRSwgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gICAgICB0aGlzLl90ID0gdmFsaWRhdGUoaXRlcmF0ZWQsIE5BTUUpOyAvLyB0YXJnZXRcbiAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIGtpbmQgPSB0aGF0Ll9rO1xuICAgICAgdmFyIGVudHJ5ID0gdGhhdC5fbDtcbiAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDtcbiAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG4gICAgICBpZiAoIXRoYXQuX3QgfHwgISh0aGF0Ll9sID0gZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGF0Ll90Ll9mKSkge1xuICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuICAgICAgICB0aGF0Ll90ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gc3RlcCgxKTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcbiAgICAgIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG4gICAgICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG4gICAgICByZXR1cm4gc3RlcCgwLCBbZW50cnkuaywgZW50cnkudl0pO1xuICAgIH0sIElTX01BUCA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnLCAhSVNfTUFQLCB0cnVlKTtcblxuICAgIC8vIGFkZCBbQEBzcGVjaWVzXSwgMjMuMS4yLjIsIDIzLjIuMi4yXG4gICAgc2V0U3BlY2llcyhOQU1FKTtcbiAgfVxufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuL19hcnJheS1mcm9tLWl0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgaWYgKGNsYXNzb2YodGhpcykgIT0gTkFNRSkgdGhyb3cgVHlwZUVycm9yKE5BTUUgKyBcIiN0b0pTT04gaXNuJ3QgZ2VuZXJpY1wiKTtcbiAgICByZXR1cm4gZnJvbSh0aGlzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBnZXRXZWFrID0gcmVxdWlyZSgnLi9fbWV0YScpLmdldFdlYWs7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgY3JlYXRlQXJyYXlNZXRob2QgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJyk7XG52YXIgJGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIGFycmF5RmluZCA9IGNyZWF0ZUFycmF5TWV0aG9kKDUpO1xudmFyIGFycmF5RmluZEluZGV4ID0gY3JlYXRlQXJyYXlNZXRob2QoNik7XG52YXIgaWQgPSAwO1xuXG4vLyBmYWxsYmFjayBmb3IgdW5jYXVnaHQgZnJvemVuIGtleXNcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gZnVuY3Rpb24gKHRoYXQpIHtcbiAgcmV0dXJuIHRoYXQuX2wgfHwgKHRoYXQuX2wgPSBuZXcgVW5jYXVnaHRGcm96ZW5TdG9yZSgpKTtcbn07XG52YXIgVW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hID0gW107XG59O1xudmFyIGZpbmRVbmNhdWdodEZyb3plbiA9IGZ1bmN0aW9uIChzdG9yZSwga2V5KSB7XG4gIHJldHVybiBhcnJheUZpbmQoc3RvcmUuYSwgZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gIH0pO1xufTtcblVuY2F1Z2h0RnJvemVuU3RvcmUucHJvdG90eXBlID0ge1xuICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgICBpZiAoZW50cnkpIHJldHVybiBlbnRyeVsxXTtcbiAgfSxcbiAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuICEhZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgICBpZiAoZW50cnkpIGVudHJ5WzFdID0gdmFsdWU7XG4gICAgZWxzZSB0aGlzLmEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9LFxuICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBpbmRleCA9IGFycmF5RmluZEluZGV4KHRoaXMuYSwgZnVuY3Rpb24gKGl0KSB7XG4gICAgICByZXR1cm4gaXRbMF0gPT09IGtleTtcbiAgICB9KTtcbiAgICBpZiAofmluZGV4KSB0aGlzLmEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gISF+aW5kZXg7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gaWQrKzsgICAgICAvLyBjb2xsZWN0aW9uIGlkXG4gICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAvLyBsZWFrIHN0b3JlIGZvciB1bmNhdWdodCBmcm96ZW4gb2JqZWN0c1xuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgIH0pO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyAyMy4zLjMuMiBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuICAgICAgLy8gMjMuNC4zLjMgV2Vha1NldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodmFsaWRhdGUodGhpcywgTkFNRSkpWydkZWxldGUnXShrZXkpO1xuICAgICAgICByZXR1cm4gZGF0YSAmJiAkaGFzKGRhdGEsIHRoaXMuX2kpICYmIGRlbGV0ZSBkYXRhW3RoaXMuX2ldO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjMuMy40IFdlYWtNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy40LjMuNCBXZWFrU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodmFsaWRhdGUodGhpcywgTkFNRSkpLmhhcyhrZXkpO1xuICAgICAgICByZXR1cm4gZGF0YSAmJiAkaGFzKGRhdGEsIHRoaXMuX2kpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBkZWY6IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIGRhdGEgPSBnZXRXZWFrKGFuT2JqZWN0KGtleSksIHRydWUpO1xuICAgIGlmIChkYXRhID09PSB0cnVlKSB1bmNhdWdodEZyb3plblN0b3JlKHRoYXQpLnNldChrZXksIHZhbHVlKTtcbiAgICBlbHNlIGRhdGFbdGhhdC5faV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhhdDtcbiAgfSxcbiAgdWZzdG9yZTogdW5jYXVnaHRGcm96ZW5TdG9yZVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRpdGVyRGV0ZWN0ID0gcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKSB7XG4gIHZhciBCYXNlID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgQyA9IEJhc2U7XG4gIHZhciBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCc7XG4gIHZhciBwcm90byA9IEMgJiYgQy5wcm90b3R5cGU7XG4gIHZhciBPID0ge307XG4gIHZhciBmaXhNZXRob2QgPSBmdW5jdGlvbiAoS0VZKSB7XG4gICAgdmFyIGZuID0gcHJvdG9bS0VZXTtcbiAgICByZWRlZmluZShwcm90bywgS0VZLFxuICAgICAgS0VZID09ICdkZWxldGUnID8gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gZmFsc2UgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdoYXMnID8gZnVuY3Rpb24gaGFzKGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gZmFsc2UgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdnZXQnID8gZnVuY3Rpb24gZ2V0KGEpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gdW5kZWZpbmVkIDogZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpO1xuICAgICAgfSA6IEtFWSA9PSAnYWRkJyA/IGZ1bmN0aW9uIGFkZChhKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTsgcmV0dXJuIHRoaXM7IH1cbiAgICAgICAgOiBmdW5jdGlvbiBzZXQoYSwgYikgeyBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSwgYik7IHJldHVybiB0aGlzOyB9XG4gICAgKTtcbiAgfTtcbiAgaWYgKHR5cGVvZiBDICE9ICdmdW5jdGlvbicgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSkge1xuICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG4gICAgQyA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gICAgbWV0YS5ORUVEID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQygpO1xuICAgIC8vIGVhcmx5IGltcGxlbWVudGF0aW9ucyBub3Qgc3VwcG9ydHMgY2hhaW5pbmdcbiAgICB2YXIgSEFTTlRfQ0hBSU5JTkcgPSBpbnN0YW5jZVtBRERFUl0oSVNfV0VBSyA/IHt9IDogLTAsIDEpICE9IGluc3RhbmNlO1xuICAgIC8vIFY4IH4gIENocm9taXVtIDQwLSB3ZWFrLWNvbGxlY3Rpb25zIHRocm93cyBvbiBwcmltaXRpdmVzLCBidXQgc2hvdWxkIHJldHVybiBmYWxzZVxuICAgIHZhciBUSFJPV1NfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuaGFzKDEpOyB9KTtcbiAgICAvLyBtb3N0IGVhcmx5IGltcGxlbWVudGF0aW9ucyBkb2Vzbid0IHN1cHBvcnRzIGl0ZXJhYmxlcywgbW9zdCBtb2Rlcm4gLSBub3QgY2xvc2UgaXQgY29ycmVjdGx5XG4gICAgdmFyIEFDQ0VQVF9JVEVSQUJMRVMgPSAkaXRlckRldGVjdChmdW5jdGlvbiAoaXRlcikgeyBuZXcgQyhpdGVyKTsgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgLy8gZm9yIGVhcmx5IGltcGxlbWVudGF0aW9ucyAtMCBhbmQgKzAgbm90IHRoZSBzYW1lXG4gICAgdmFyIEJVR0dZX1pFUk8gPSAhSVNfV0VBSyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBWOCB+IENocm9taXVtIDQyLSBmYWlscyBvbmx5IHdpdGggNSsgZWxlbWVudHNcbiAgICAgIHZhciAkaW5zdGFuY2UgPSBuZXcgQygpO1xuICAgICAgdmFyIGluZGV4ID0gNTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSAkaW5zdGFuY2VbQURERVJdKGluZGV4LCBpbmRleCk7XG4gICAgICByZXR1cm4gISRpbnN0YW5jZS5oYXMoLTApO1xuICAgIH0pO1xuICAgIGlmICghQUNDRVBUX0lURVJBQkxFUykge1xuICAgICAgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRhcmdldCwgaXRlcmFibGUpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUpO1xuICAgICAgICB2YXIgdGhhdCA9IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKCksIHRhcmdldCwgQyk7XG4gICAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgICB9KTtcbiAgICAgIEMucHJvdG90eXBlID0gcHJvdG87XG4gICAgICBwcm90by5jb25zdHJ1Y3RvciA9IEM7XG4gICAgfVxuICAgIGlmIChUSFJPV1NfT05fUFJJTUlUSVZFUyB8fCBCVUdHWV9aRVJPKSB7XG4gICAgICBmaXhNZXRob2QoJ2RlbGV0ZScpO1xuICAgICAgZml4TWV0aG9kKCdoYXMnKTtcbiAgICAgIElTX01BUCAmJiBmaXhNZXRob2QoJ2dldCcpO1xuICAgIH1cbiAgICBpZiAoQlVHR1lfWkVSTyB8fCBIQVNOVF9DSEFJTklORykgZml4TWV0aG9kKEFEREVSKTtcbiAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIHNob3VsZCBub3QgY29udGFpbnMgLmNsZWFyIG1ldGhvZFxuICAgIGlmIChJU19XRUFLICYmIHByb3RvLmNsZWFyKSBkZWxldGUgcHJvdG8uY2xlYXI7XG4gIH1cblxuICBzZXRUb1N0cmluZ1RhZyhDLCBOQU1FKTtcblxuICBPW05BTUVdID0gQztcbiAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQyAhPSBCYXNlKSwgTyk7XG5cbiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cbiAgcmV0dXJuIEM7XG59O1xuIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS41JyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGluZGV4LCB2YWx1ZSkge1xuICBpZiAoaW5kZXggaW4gb2JqZWN0KSAkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2luZGV4XSA9IHZhbHVlO1xufTtcbiIsIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIwLjMuNC4zNiAvIDE1LjkuNS40MyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZygpXG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGdldFRpbWUgPSBEYXRlLnByb3RvdHlwZS5nZXRUaW1lO1xudmFyICR0b0lTT1N0cmluZyA9IERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nO1xuXG52YXIgbHogPSBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBudW0gPiA5ID8gbnVtIDogJzAnICsgbnVtO1xufTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG5tb2R1bGUuZXhwb3J0cyA9IChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkdG9JU09TdHJpbmcuY2FsbChuZXcgRGF0ZSgtNWUxMyAtIDEpKSAhPSAnMDM4NS0wNy0yNVQwNzowNjozOS45OTlaJztcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKE5hTikpO1xufSkpID8gZnVuY3Rpb24gdG9JU09TdHJpbmcoKSB7XG4gIGlmICghaXNGaW5pdGUoZ2V0VGltZS5jYWxsKHRoaXMpKSkgdGhyb3cgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIHZhciBkID0gdGhpcztcbiAgdmFyIHkgPSBkLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBtID0gZC5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgdmFyIHMgPSB5IDwgMCA/ICctJyA6IHkgPiA5OTk5ID8gJysnIDogJyc7XG4gIHJldHVybiBzICsgKCcwMDAwMCcgKyBNYXRoLmFicyh5KSkuc2xpY2UocyA/IC02IDogLTQpICtcbiAgICAnLScgKyBseihkLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArIGx6KGQuZ2V0VVRDRGF0ZSgpKSArXG4gICAgJ1QnICsgbHooZC5nZXRVVENIb3VycygpKSArICc6JyArIGx6KGQuZ2V0VVRDTWludXRlcygpKSArXG4gICAgJzonICsgbHooZC5nZXRVVENTZWNvbmRzKCkpICsgJy4nICsgKG0gPiA5OSA/IG0gOiAnMCcgKyBseihtKSkgKyAnWic7XG59IDogJHRvSVNPU3RyaW5nO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBOVU1CRVIgPSAnbnVtYmVyJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGludCkge1xuICBpZiAoaGludCAhPT0gJ3N0cmluZycgJiYgaGludCAhPT0gTlVNQkVSICYmIGhpbnQgIT09ICdkZWZhdWx0JykgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgaGludCcpO1xuICByZXR1cm4gdG9QcmltaXRpdmUoYW5PYmplY3QodGhpcyksIGhpbnQgIT0gTlVNQkVSKTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIHx8IChnbG9iYWxbbmFtZV0gPSB7fSkgOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KTtcbiAgdmFyIGtleSwgb3duLCBvdXQsIGV4cDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYgKHRhcmdldCkgcmVkZWZpbmUodGFyZ2V0LCBrZXksIG91dCwgdHlwZSAmICRleHBvcnQuVSk7XG4gICAgLy8gZXhwb3J0XG4gICAgaWYgKGV4cG9ydHNba2V5XSAhPSBvdXQpIGhpZGUoZXhwb3J0cywga2V5LCBleHApO1xuICAgIGlmIChJU19QUk9UTyAmJiBleHBQcm90b1trZXldICE9IG91dCkgZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcbiIsInZhciBNQVRDSCA9IHJlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciByZSA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tLRVldKHJlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICByZVtNQVRDSF0gPSBmYWxzZTtcbiAgICAgIHJldHVybiAhJy8uLydbS0VZXShyZSk7XG4gICAgfSBjYXRjaCAoZikgeyAvKiBlbXB0eSAqLyB9XG4gIH0gcmV0dXJuIHRydWU7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYykge1xuICB2YXIgU1lNQk9MID0gd2tzKEtFWSk7XG4gIHZhciBmbnMgPSBleGVjKGRlZmluZWQsIFNZTUJPTCwgJydbS0VZXSk7XG4gIHZhciBzdHJmbiA9IGZuc1swXTtcbiAgdmFyIHJ4Zm4gPSBmbnNbMV07XG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pKSB7XG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbiAoc3RyaW5nLCBhcmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFnc1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtZmxhdE1hcC8jc2VjLUZsYXR0ZW5JbnRvQXJyYXlcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEUgPSByZXF1aXJlKCcuL193a3MnKSgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5JbnRvQXJyYXkodGFyZ2V0LCBvcmlnaW5hbCwgc291cmNlLCBzb3VyY2VMZW4sIHN0YXJ0LCBkZXB0aCwgbWFwcGVyLCB0aGlzQXJnKSB7XG4gIHZhciB0YXJnZXRJbmRleCA9IHN0YXJ0O1xuICB2YXIgc291cmNlSW5kZXggPSAwO1xuICB2YXIgbWFwRm4gPSBtYXBwZXIgPyBjdHgobWFwcGVyLCB0aGlzQXJnLCAzKSA6IGZhbHNlO1xuICB2YXIgZWxlbWVudCwgc3ByZWFkYWJsZTtcblxuICB3aGlsZSAoc291cmNlSW5kZXggPCBzb3VyY2VMZW4pIHtcbiAgICBpZiAoc291cmNlSW5kZXggaW4gc291cmNlKSB7XG4gICAgICBlbGVtZW50ID0gbWFwRm4gPyBtYXBGbihzb3VyY2Vbc291cmNlSW5kZXhdLCBzb3VyY2VJbmRleCwgb3JpZ2luYWwpIDogc291cmNlW3NvdXJjZUluZGV4XTtcblxuICAgICAgc3ByZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKGlzT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgIHNwcmVhZGFibGUgPSBlbGVtZW50W0lTX0NPTkNBVF9TUFJFQURBQkxFXTtcbiAgICAgICAgc3ByZWFkYWJsZSA9IHNwcmVhZGFibGUgIT09IHVuZGVmaW5lZCA/ICEhc3ByZWFkYWJsZSA6IGlzQXJyYXkoZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzcHJlYWRhYmxlICYmIGRlcHRoID4gMCkge1xuICAgICAgICB0YXJnZXRJbmRleCA9IGZsYXR0ZW5JbnRvQXJyYXkodGFyZ2V0LCBvcmlnaW5hbCwgZWxlbWVudCwgdG9MZW5ndGgoZWxlbWVudC5sZW5ndGgpLCB0YXJnZXRJbmRleCwgZGVwdGggLSAxKSAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPj0gMHgxZmZmZmZmZmZmZmZmZikgdGhyb3cgVHlwZUVycm9yKCk7XG4gICAgICAgIHRhcmdldFt0YXJnZXRJbmRleF0gPSBlbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRJbmRleCsrO1xuICAgIH1cbiAgICBzb3VyY2VJbmRleCsrO1xuICB9XG4gIHJldHVybiB0YXJnZXRJbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuSW50b0FycmF5O1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgdGFyZ2V0LCBDKSB7XG4gIHZhciBTID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB2YXIgUDtcbiAgaWYgKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2YpIHtcbiAgICBzZXRQcm90b3R5cGVPZih0aGF0LCBQKTtcbiAgfSByZXR1cm4gdGhhdDtcbn07XG4iLCIvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBhcmdzLCB0aGF0KSB7XG4gIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07XG4iLCIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIiwiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwbTEgPSBNYXRoLmV4cG0xO1xubW9kdWxlLmV4cG9ydHMgPSAoISRleHBtMVxuICAvLyBPbGQgRkYgYnVnXG4gIHx8ICRleHBtMSgxMCkgPiAyMjAyNS40NjU3OTQ4MDY3MTkgfHwgJGV4cG0xKDEwKSA8IDIyMDI1LjQ2NTc5NDgwNjcxNjUxNjhcbiAgLy8gVG9yIEJyb3dzZXIgYnVnXG4gIHx8ICRleHBtMSgtMmUtMTcpICE9IC0yZS0xN1xuKSA/IGZ1bmN0aW9uIGV4cG0xKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgPyB4IDogeCA+IC0xZS02ICYmIHggPCAxZS02ID8geCArIHggKiB4IC8gMiA6IE1hdGguZXhwKHgpIC0gMTtcbn0gOiAkZXhwbTE7XG4iLCIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciBzaWduID0gcmVxdWlyZSgnLi9fbWF0aC1zaWduJyk7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgRVBTSUxPTiA9IHBvdygyLCAtNTIpO1xudmFyIEVQU0lMT04zMiA9IHBvdygyLCAtMjMpO1xudmFyIE1BWDMyID0gcG93KDIsIDEyNykgKiAoMiAtIEVQU0lMT04zMik7XG52YXIgTUlOMzIgPSBwb3coMiwgLTEyNik7XG5cbnZhciByb3VuZFRpZXNUb0V2ZW4gPSBmdW5jdGlvbiAobikge1xuICByZXR1cm4gbiArIDEgLyBFUFNJTE9OIC0gMSAvIEVQU0lMT047XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZnJvdW5kIHx8IGZ1bmN0aW9uIGZyb3VuZCh4KSB7XG4gIHZhciAkYWJzID0gTWF0aC5hYnMoeCk7XG4gIHZhciAkc2lnbiA9IHNpZ24oeCk7XG4gIHZhciBhLCByZXN1bHQ7XG4gIGlmICgkYWJzIDwgTUlOMzIpIHJldHVybiAkc2lnbiAqIHJvdW5kVGllc1RvRXZlbigkYWJzIC8gTUlOMzIgLyBFUFNJTE9OMzIpICogTUlOMzIgKiBFUFNJTE9OMzI7XG4gIGEgPSAoMSArIEVQU0lMT04zMiAvIEVQU0lMT04pICogJGFicztcbiAgcmVzdWx0ID0gYSAtIChhIC0gJGFicyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHJlc3VsdCA+IE1BWDMyIHx8IHJlc3VsdCAhPSByZXN1bHQpIHJldHVybiAkc2lnbiAqIEluZmluaXR5O1xuICByZXR1cm4gJHNpZ24gKiByZXN1bHQ7XG59O1xuIiwiLy8gMjAuMi4yLjIwIE1hdGgubG9nMXAoeClcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5sb2cxcCB8fCBmdW5jdGlvbiBsb2cxcCh4KSB7XG4gIHJldHVybiAoeCA9ICt4KSA+IC0xZS04ICYmIHggPCAxZS04ID8geCAtIHggKiB4IC8gMiA6IE1hdGgubG9nKDEgKyB4KTtcbn07XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2NhbGUgfHwgZnVuY3Rpb24gc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gIGlmIChcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAwXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCB4ICE9IHhcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IGluTG93ICE9IGluTG93XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBpbkhpZ2ggIT0gaW5IaWdoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBvdXRMb3cgIT0gb3V0TG93XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBvdXRIaWdoICE9IG91dEhpZ2hcbiAgKSByZXR1cm4gTmFOO1xuICBpZiAoeCA9PT0gSW5maW5pdHkgfHwgeCA9PT0gLUluZmluaXR5KSByZXR1cm4geDtcbiAgcmV0dXJuICh4IC0gaW5Mb3cpICogKG91dEhpZ2ggLSBvdXRMb3cpIC8gKGluSGlnaCAtIGluTG93KSArIG91dExvdztcbn07XG4iLCIvLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbiBzaWduKHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4gKHggPSAreCkgPT0gMCB8fCB4ICE9IHggPyB4IDogeCA8IDAgPyAtMSA6IDE7XG59O1xuIiwidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vZXM2Lm1hcCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnbWV0YWRhdGEnKTtcbnZhciBzdG9yZSA9IHNoYXJlZC5zdG9yZSB8fCAoc2hhcmVkLnN0b3JlID0gbmV3IChyZXF1aXJlKCcuL2VzNi53ZWFrLW1hcCcpKSgpKTtcblxudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXksIGNyZWF0ZSkge1xuICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBzdG9yZS5nZXQodGFyZ2V0KTtcbiAgaWYgKCF0YXJnZXRNZXRhZGF0YSkge1xuICAgIGlmICghY3JlYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHN0b3JlLnNldCh0YXJnZXQsIHRhcmdldE1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfVxuICB2YXIga2V5TWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YS5nZXQodGFyZ2V0S2V5KTtcbiAgaWYgKCFrZXlNZXRhZGF0YSkge1xuICAgIGlmICghY3JlYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRhcmdldE1ldGFkYXRhLnNldCh0YXJnZXRLZXksIGtleU1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfSByZXR1cm4ga2V5TWV0YWRhdGE7XG59O1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBmYWxzZSk7XG4gIHJldHVybiBtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBtZXRhZGF0YU1hcC5oYXMoTWV0YWRhdGFLZXkpO1xufTtcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG1ldGFkYXRhTWFwLmdldChNZXRhZGF0YUtleSk7XG59O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCB0cnVlKS5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xufTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKHRhcmdldCwgdGFyZ2V0S2V5LCBmYWxzZSk7XG4gIHZhciBrZXlzID0gW107XG4gIGlmIChtZXRhZGF0YU1hcCkgbWV0YWRhdGFNYXAuZm9yRWFjaChmdW5jdGlvbiAoXywga2V5KSB7IGtleXMucHVzaChrZXkpOyB9KTtcbiAgcmV0dXJuIGtleXM7XG59O1xudmFyIHRvTWV0YUtleSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xudmFyIGV4cCA9IGZ1bmN0aW9uIChPKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIE8pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0b3JlOiBzdG9yZSxcbiAgbWFwOiBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwLFxuICBoYXM6IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEsXG4gIGdldDogb3JkaW5hcnlHZXRPd25NZXRhZGF0YSxcbiAgc2V0OiBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhLFxuICBrZXlzOiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyxcbiAga2V5OiB0b01ldGFLZXksXG4gIGV4cDogZXhwXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjUuNC4xLjUgTmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5cbmZ1bmN0aW9uIFByb21pc2VDYXBhYmlsaXR5KEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFGdW5jdGlvbihyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhRnVuY3Rpb24ocmVqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSBpZiAoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSkgVFtrZXldID0gU1trZXldO1xuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBQO1xuICB3aGlsZSAobGVuZ3RoID4gaSkgZFAuZihPLCBQID0ga2V5c1tpKytdLCBQcm9wZXJ0aWVzW1BdKTtcbiAgcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gRm9yY2VkIHJlcGxhY2VtZW50IHByb3RvdHlwZSBhY2Nlc3NvcnMgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19saWJyYXJ5JykgfHwgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgSyA9IE1hdGgucmFuZG9tKCk7XG4gIC8vIEluIEZGIHRocm93cyBvbmx5IGRlZmluZSBtZXRob2RzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZiwgbm8tdXNlbGVzcy1jYWxsXG4gIF9fZGVmaW5lU2V0dGVyX18uY2FsbChudWxsLCBLLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuICBkZWxldGUgcmVxdWlyZSgnLi9fZ2xvYmFsJylbS107XG59KTtcbiIsInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcbiIsInZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgaXNFbnVtID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpc0VudHJpZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KGl0KTtcbiAgICB2YXIga2V5cyA9IGdldEtleXMoTyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKE8sIGtleSA9IGtleXNbaSsrXSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGlzRW50cmllcyA/IFtrZXksIE9ba2V5XV0gOiBPW2tleV0pO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG4iLCIvLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdDtcbm1vZHVsZS5leHBvcnRzID0gUmVmbGVjdCAmJiBSZWZsZWN0Lm93bktleXMgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdPUE4uZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgcmV0dXJuIGdldFN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlRmxvYXQ7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG5cbm1vZHVsZS5leHBvcnRzID0gMSAvICRwYXJzZUZsb2F0KHJlcXVpcmUoJy4vX3N0cmluZy13cycpICsgJy0wJykgIT09IC1JbmZpbml0eSA/IGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyKSB7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMyk7XG4gIHZhciByZXN1bHQgPSAkcGFyc2VGbG9hdChzdHJpbmcpO1xuICByZXR1cm4gcmVzdWx0ID09PSAwICYmIHN0cmluZy5jaGFyQXQoMCkgPT0gJy0nID8gLTAgOiByZXN1bHQ7XG59IDogJHBhcnNlRmxvYXQ7XG4iLCJ2YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VJbnQ7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd3MgPSByZXF1aXJlKCcuL19zdHJpbmctd3MnKTtcbnZhciBoZXggPSAvXlstK10/MFt4WF0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRwYXJzZUludCh3cyArICcwOCcpICE9PSA4IHx8ICRwYXJzZUludCh3cyArICcweDE2JykgIT09IDIyID8gZnVuY3Rpb24gcGFyc2VJbnQoc3RyLCByYWRpeCkge1xuICB2YXIgc3RyaW5nID0gJHRyaW0oU3RyaW5nKHN0ciksIDMpO1xuICByZXR1cm4gJHBhcnNlSW50KHN0cmluZywgKHJhZGl4ID4+PiAwKSB8fCAoaGV4LnRlc3Qoc3RyaW5nKSA/IDE2IDogMTApKTtcbn0gOiAkcGFyc2VJbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBzYWZlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBTUkMgPSByZXF1aXJlKCcuL191aWQnKSgnc3JjJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBGdW5jdGlvbltUT19TVFJJTkddO1xudmFyIFRQTCA9ICgnJyArICR0b1N0cmluZykuc3BsaXQoVE9fU1RSSU5HKTtcblxucmVxdWlyZSgnLi9fY29yZScpLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuICR0b1N0cmluZy5jYWxsKGl0KTtcbn07XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbCwgc2FmZSkge1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiB2YWwgPT0gJ2Z1bmN0aW9uJztcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsICduYW1lJykgfHwgaGlkZSh2YWwsICduYW1lJywga2V5KTtcbiAgaWYgKE9ba2V5XSA9PT0gdmFsKSByZXR1cm47XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCBTUkMpIHx8IGhpZGUodmFsLCBTUkMsIE9ba2V5XSA/ICcnICsgT1trZXldIDogVFBMLmpvaW4oU3RyaW5nKGtleSkpKTtcbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIGlmICghc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH0gZWxzZSBpZiAoT1trZXldKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2Uge1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgdGhpc1tTUkNdIHx8ICR0b1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyZWdFeHAsIHJlcGxhY2UpIHtcbiAgdmFyIHJlcGxhY2VyID0gcmVwbGFjZSA9PT0gT2JqZWN0KHJlcGxhY2UpID8gZnVuY3Rpb24gKHBhcnQpIHtcbiAgICByZXR1cm4gcmVwbGFjZVtwYXJ0XTtcbiAgfSA6IHJlcGxhY2U7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gU3RyaW5nKGl0KS5yZXBsYWNlKHJlZ0V4cCwgcmVwbGFjZXIpO1xuICB9O1xufTtcbiIsIi8vIDcuMi45IFNhbWVWYWx1ZSh4LCB5KVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsIENPTExFQ1RJT04sIHsgZnJvbTogZnVuY3Rpb24gZnJvbShzb3VyY2UgLyogLCBtYXBGbiwgdGhpc0FyZyAqLykge1xuICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgbWFwcGluZywgQSwgbiwgY2I7XG4gICAgYUZ1bmN0aW9uKHRoaXMpO1xuICAgIG1hcHBpbmcgPSBtYXBGbiAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChtYXBwaW5nKSBhRnVuY3Rpb24obWFwRm4pO1xuICAgIGlmIChzb3VyY2UgPT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IHRoaXMoKTtcbiAgICBBID0gW107XG4gICAgaWYgKG1hcHBpbmcpIHtcbiAgICAgIG4gPSAwO1xuICAgICAgY2IgPSBjdHgobWFwRm4sIGFyZ3VtZW50c1syXSwgMik7XG4gICAgICBmb3JPZihzb3VyY2UsIGZhbHNlLCBmdW5jdGlvbiAobmV4dEl0ZW0pIHtcbiAgICAgICAgQS5wdXNoKGNiKG5leHRJdGVtLCBuKyspKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JPZihzb3VyY2UsIGZhbHNlLCBBLnB1c2gsIEEpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRoaXMoQSk7XG4gIH0gfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBvZjogZnVuY3Rpb24gb2YoKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIEEgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIEFbbGVuZ3RoXSA9IGFyZ3VtZW50c1tsZW5ndGhdO1xuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG4iLCIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pO1xufTtcbiIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1ldGhvZCwgYXJnKSB7XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbFxuICAgIGFyZyA/IG1ldGhvZC5jYWxsKG51bGwsIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgMSkgOiBtZXRob2QuY2FsbChudWxsKTtcbiAgfSk7XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcbiIsIi8vIGhlbHBlciBmb3IgU3RyaW5nI3tzdGFydHNXaXRoLCBlbmRzV2l0aCwgaW5jbHVkZXN9XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpIHtcbiAgaWYgKGlzUmVnRXhwKHNlYXJjaFN0cmluZykpIHRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgcXVvdCA9IC9cIi9nO1xuLy8gQi4yLjMuMi4xIENyZWF0ZUhUTUwoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpXG52YXIgY3JlYXRlSFRNTCA9IGZ1bmN0aW9uIChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSkge1xuICB2YXIgUyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCBleGVjKSB7XG4gIHZhciBPID0ge307XG4gIE9bTkFNRV0gPSBleGVjKGNyZWF0ZUhUTUwpO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW05BTUVdKCdcIicpO1xuICAgIHJldHVybiB0ZXN0ICE9PSB0ZXN0LnRvTG93ZXJDYXNlKCkgfHwgdGVzdC5zcGxpdCgnXCInKS5sZW5ndGggPiAzO1xuICB9KSwgJ1N0cmluZycsIE8pO1xufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nLCBsZWZ0KSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICB2YXIgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGg7XG4gIHZhciBmaWxsU3RyID0gZmlsbFN0cmluZyA9PT0gdW5kZWZpbmVkID8gJyAnIDogU3RyaW5nKGZpbGxTdHJpbmcpO1xuICB2YXIgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgaWYgKGludE1heExlbmd0aCA8PSBzdHJpbmdMZW5ndGggfHwgZmlsbFN0ciA9PSAnJykgcmV0dXJuIFM7XG4gIHZhciBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICB2YXIgc3RyaW5nRmlsbGVyID0gcmVwZWF0LmNhbGwoZmlsbFN0ciwgTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICBpZiAoc3RyaW5nRmlsbGVyLmxlbmd0aCA+IGZpbGxMZW4pIHN0cmluZ0ZpbGxlciA9IHN0cmluZ0ZpbGxlci5zbGljZSgwLCBmaWxsTGVuKTtcbiAgcmV0dXJuIGxlZnQgPyBzdHJpbmdGaWxsZXIgKyBTIDogUyArIHN0cmluZ0ZpbGxlcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVwZWF0KGNvdW50KSB7XG4gIHZhciBzdHIgPSBTdHJpbmcoZGVmaW5lZCh0aGlzKSk7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIG4gPSB0b0ludGVnZXIoY291bnQpO1xuICBpZiAobiA8IDAgfHwgbiA9PSBJbmZpbml0eSkgdGhyb3cgUmFuZ2VFcnJvcihcIkNvdW50IGNhbid0IGJlIG5lZ2F0aXZlXCIpO1xuICBmb3IgKDtuID4gMDsgKG4gPj4+PSAxKSAmJiAoc3RyICs9IHN0cikpIGlmIChuICYgMSkgcmVzICs9IHN0cjtcbiAgcmV0dXJuIHJlcztcbn07XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNwYWNlcyA9IHJlcXVpcmUoJy4vX3N0cmluZy13cycpO1xudmFyIHNwYWNlID0gJ1snICsgc3BhY2VzICsgJ10nO1xudmFyIG5vbiA9ICdcXHUyMDBiXFx1MDA4NSc7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ14nICsgc3BhY2UgKyBzcGFjZSArICcqJyk7XG52YXIgcnRyaW0gPSBSZWdFeHAoc3BhY2UgKyBzcGFjZSArICcqJCcpO1xuXG52YXIgZXhwb3J0ZXIgPSBmdW5jdGlvbiAoS0VZLCBleGVjLCBBTElBUykge1xuICB2YXIgZXhwID0ge307XG4gIHZhciBGT1JDRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISFzcGFjZXNbS0VZXSgpIHx8IG5vbltLRVldKCkgIT0gbm9uO1xuICB9KTtcbiAgdmFyIGZuID0gZXhwW0tFWV0gPSBGT1JDRSA/IGV4ZWModHJpbSkgOiBzcGFjZXNbS0VZXTtcbiAgaWYgKEFMSUFTKSBleHBbQUxJQVNdID0gZm47XG4gICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogRk9SQ0UsICdTdHJpbmcnLCBleHApO1xufTtcblxuLy8gMSAtPiBTdHJpbmcjdHJpbUxlZnRcbi8vIDIgLT4gU3RyaW5nI3RyaW1SaWdodFxuLy8gMyAtPiBTdHJpbmcjdHJpbVxudmFyIHRyaW0gPSBleHBvcnRlci50cmltID0gZnVuY3Rpb24gKHN0cmluZywgVFlQRSkge1xuICBzdHJpbmcgPSBTdHJpbmcoZGVmaW5lZChzdHJpbmcpKTtcbiAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShsdHJpbSwgJycpO1xuICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJ0cmltLCAnJyk7XG4gIHJldHVybiBzdHJpbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydGVyO1xuIiwibW9kdWxlLmV4cG9ydHMgPSAnXFx4MDlcXHgwQVxceDBCXFx4MENcXHgwRFxceDIwXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDMnICtcbiAgJ1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2luZGV4XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXIoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGghJyk7XG4gIHJldHVybiBsZW5ndGg7XG59O1xuIiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpKSB7XG4gIHZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xuICB2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG4gIHZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG4gIHZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4gIHZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xuICB2YXIgJGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xuICB2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG4gIHZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbiAgdmFyIHByb3BlcnR5RGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbiAgdmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4gIHZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xuICB2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xuICB2YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbiAgdmFyIHRvSW5kZXggPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xuICB2YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbiAgdmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG4gIHZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbiAgdmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG4gIHZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuICB2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbiAgdmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xuICB2YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xuICB2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG4gIHZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xuICB2YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbiAgdmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xuICB2YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4gIHZhciBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKTtcbiAgdmFyIGNyZWF0ZUFycmF5SW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpO1xuICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuICB2YXIgQXJyYXlJdGVyYXRvcnMgPSByZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xuICB2YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG4gIHZhciAkaXRlckRldGVjdCA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0Jyk7XG4gIHZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbiAgdmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKTtcbiAgdmFyIGFycmF5Q29weVdpdGhpbiA9IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJyk7XG4gIHZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbiAgdmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbiAgdmFyIGRQID0gJERQLmY7XG4gIHZhciBnT1BEID0gJEdPUEQuZjtcbiAgdmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbiAgdmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG4gIHZhciBVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXk7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xuICB2YXIgU0hBUkVEX0JVRkZFUiA9ICdTaGFyZWQnICsgQVJSQVlfQlVGRkVSO1xuICB2YXIgQllURVNfUEVSX0VMRU1FTlQgPSAnQllURVNfUEVSX0VMRU1FTlQnO1xuICB2YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXlbUFJPVE9UWVBFXTtcbiAgdmFyICRBcnJheUJ1ZmZlciA9ICRidWZmZXIuQXJyYXlCdWZmZXI7XG4gIHZhciAkRGF0YVZpZXcgPSAkYnVmZmVyLkRhdGFWaWV3O1xuICB2YXIgYXJyYXlGb3JFYWNoID0gY3JlYXRlQXJyYXlNZXRob2QoMCk7XG4gIHZhciBhcnJheUZpbHRlciA9IGNyZWF0ZUFycmF5TWV0aG9kKDIpO1xuICB2YXIgYXJyYXlTb21lID0gY3JlYXRlQXJyYXlNZXRob2QoMyk7XG4gIHZhciBhcnJheUV2ZXJ5ID0gY3JlYXRlQXJyYXlNZXRob2QoNCk7XG4gIHZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbiAgdmFyIGFycmF5RmluZEluZGV4ID0gY3JlYXRlQXJyYXlNZXRob2QoNik7XG4gIHZhciBhcnJheUluY2x1ZGVzID0gY3JlYXRlQXJyYXlJbmNsdWRlcyh0cnVlKTtcbiAgdmFyIGFycmF5SW5kZXhPZiA9IGNyZWF0ZUFycmF5SW5jbHVkZXMoZmFsc2UpO1xuICB2YXIgYXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9ycy52YWx1ZXM7XG4gIHZhciBhcnJheUtleXMgPSBBcnJheUl0ZXJhdG9ycy5rZXlzO1xuICB2YXIgYXJyYXlFbnRyaWVzID0gQXJyYXlJdGVyYXRvcnMuZW50cmllcztcbiAgdmFyIGFycmF5TGFzdEluZGV4T2YgPSBBcnJheVByb3RvLmxhc3RJbmRleE9mO1xuICB2YXIgYXJyYXlSZWR1Y2UgPSBBcnJheVByb3RvLnJlZHVjZTtcbiAgdmFyIGFycmF5UmVkdWNlUmlnaHQgPSBBcnJheVByb3RvLnJlZHVjZVJpZ2h0O1xuICB2YXIgYXJyYXlKb2luID0gQXJyYXlQcm90by5qb2luO1xuICB2YXIgYXJyYXlTb3J0ID0gQXJyYXlQcm90by5zb3J0O1xuICB2YXIgYXJyYXlTbGljZSA9IEFycmF5UHJvdG8uc2xpY2U7XG4gIHZhciBhcnJheVRvU3RyaW5nID0gQXJyYXlQcm90by50b1N0cmluZztcbiAgdmFyIGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBBcnJheVByb3RvLnRvTG9jYWxlU3RyaW5nO1xuICB2YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG4gIHZhciBUQUcgPSB3a3MoJ3RvU3RyaW5nVGFnJyk7XG4gIHZhciBUWVBFRF9DT05TVFJVQ1RPUiA9IHVpZCgndHlwZWRfY29uc3RydWN0b3InKTtcbiAgdmFyIERFRl9DT05TVFJVQ1RPUiA9IHVpZCgnZGVmX2NvbnN0cnVjdG9yJyk7XG4gIHZhciBBTExfQ09OU1RSVUNUT1JTID0gJHR5cGVkLkNPTlNUUjtcbiAgdmFyIFRZUEVEX0FSUkFZID0gJHR5cGVkLlRZUEVEO1xuICB2YXIgVklFVyA9ICR0eXBlZC5WSUVXO1xuICB2YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xuXG4gIHZhciAkbWFwID0gY3JlYXRlQXJyYXlNZXRob2QoMSwgZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICAgIHJldHVybiBhbGxvY2F0ZShzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGVuZ3RoKTtcbiAgfSk7XG5cbiAgdmFyIExJVFRMRV9FTkRJQU4gPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBVaW50MTZBcnJheShbMV0pLmJ1ZmZlcilbMF0gPT09IDE7XG4gIH0pO1xuXG4gIHZhciBGT1JDRURfU0VUID0gISFVaW50OEFycmF5ICYmICEhVWludDhBcnJheVtQUk9UT1RZUEVdLnNldCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IFVpbnQ4QXJyYXkoMSkuc2V0KHt9KTtcbiAgfSk7XG5cbiAgdmFyIHRvT2Zmc2V0ID0gZnVuY3Rpb24gKGl0LCBCWVRFUykge1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXIoaXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfTtcblxuICB2YXIgdmFsaWRhdGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaXQpICYmIFRZUEVEX0FSUkFZIGluIGl0KSByZXR1cm4gaXQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSB0eXBlZCBhcnJheSEnKTtcbiAgfTtcblxuICB2YXIgYWxsb2NhdGUgPSBmdW5jdGlvbiAoQywgbGVuZ3RoKSB7XG4gICAgaWYgKCEoaXNPYmplY3QoQykgJiYgVFlQRURfQ09OU1RSVUNUT1IgaW4gQykpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhJyk7XG4gICAgfSByZXR1cm4gbmV3IEMobGVuZ3RoKTtcbiAgfTtcblxuICB2YXIgc3BlY2llc0Zyb21MaXN0ID0gZnVuY3Rpb24gKE8sIGxpc3QpIHtcbiAgICByZXR1cm4gZnJvbUxpc3Qoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE9bREVGX0NPTlNUUlVDVE9SXSksIGxpc3QpO1xuICB9O1xuXG4gIHZhciBmcm9tTGlzdCA9IGZ1bmN0aW9uIChDLCBsaXN0KSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKEMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoaXQsIGtleSwgaW50ZXJuYWwpIHtcbiAgICBkUChpdCwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZFtpbnRlcm5hbF07IH0gfSk7XG4gIH07XG5cbiAgdmFyICRmcm9tID0gZnVuY3Rpb24gZnJvbShzb3VyY2UgLyogLCBtYXBmbiwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3Qoc291cmNlKTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGksIGxlbmd0aCwgdmFsdWVzLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICFpc0FycmF5SXRlcihpdGVyRm4pKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHZhbHVlcyA9IFtdLCBpID0gMDsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpKyspIHtcbiAgICAgICAgdmFsdWVzLnB1c2goc3RlcC52YWx1ZSk7XG4gICAgICB9IE8gPSB2YWx1ZXM7XG4gICAgfVxuICAgIGlmIChtYXBwaW5nICYmIGFMZW4gPiAyKSBtYXBmbiA9IGN0eChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCksIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7IGxlbmd0aCA+IGk7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gbWFwcGluZyA/IG1hcGZuKE9baV0sIGkpIDogT1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgJG9mID0gZnVuY3Rpb24gb2YoLyogLi4uaXRlbXMgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBhbGxvY2F0ZSh0aGlzLCBsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbiAgdmFyIFRPX0xPQ0FMRV9CVUcgPSAhIVVpbnQ4QXJyYXkgJiYgZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvTG9jYWxlU3RyaW5nLmNhbGwobmV3IFVpbnQ4QXJyYXkoMSkpOyB9KTtcblxuICB2YXIgJHRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKSB7XG4gICAgcmV0dXJuIGFycmF5VG9Mb2NhbGVTdHJpbmcuYXBwbHkoVE9fTE9DQUxFX0JVRyA/IGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSkgOiB2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgfTtcblxuICB2YXIgcHJvdG8gPSB7XG4gICAgY29weVdpdGhpbjogZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qICwgZW5kICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlDb3B5V2l0aGluLmNhbGwodmFsaWRhdGUodGhpcyksIHRhcmdldCwgc3RhcnQsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RXZlcnkodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbGw6IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCwgZW5kICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUZpbGwuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheUZpbHRlcih2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbixcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpKTtcbiAgICB9LFxuICAgIGZpbmQ6IGZ1bmN0aW9uIGZpbmQocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RmluZCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmaW5kSW5kZXg6IGZ1bmN0aW9uIGZpbmRJbmRleChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kSW5kZXgodmFsaWRhdGUodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgYXJyYXlGb3JFYWNoKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluZGV4T2YodmFsaWRhdGUodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyh2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5Sm9pbi5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUxhc3RJbmRleE9mLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbWFwOiBmdW5jdGlvbiBtYXAobWFwZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gJG1hcCh2YWxpZGF0ZSh0aGlzKSwgbWFwZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgcmVkdWNlUmlnaHQ6IGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlUmlnaHQuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlKHRoYXQpLmxlbmd0aDtcbiAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmZsb29yKGxlbmd0aCAvIDIpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciB2YWx1ZTtcbiAgICAgIHdoaWxlIChpbmRleCA8IG1pZGRsZSkge1xuICAgICAgICB2YWx1ZSA9IHRoYXRbaW5kZXhdO1xuICAgICAgICB0aGF0W2luZGV4KytdID0gdGhhdFstLWxlbmd0aF07XG4gICAgICAgIHRoYXRbbGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgfSByZXR1cm4gdGhhdDtcbiAgICB9LFxuICAgIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheVNvbWUodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgICByZXR1cm4gYXJyYXlTb3J0LmNhbGwodmFsaWRhdGUodGhpcyksIGNvbXBhcmVmbik7XG4gICAgfSxcbiAgICBzdWJhcnJheTogZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVuZCkge1xuICAgICAgdmFyIE8gPSB2YWxpZGF0ZSh0aGlzKTtcbiAgICAgIHZhciBsZW5ndGggPSBPLmxlbmd0aDtcbiAgICAgIHZhciAkYmVnaW4gPSB0b0Fic29sdXRlSW5kZXgoYmVnaW4sIGxlbmd0aCk7XG4gICAgICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSkoXG4gICAgICAgIE8uYnVmZmVyLFxuICAgICAgICBPLmJ5dGVPZmZzZXQgKyAkYmVnaW4gKiBPLkJZVEVTX1BFUl9FTEVNRU5ULFxuICAgICAgICB0b0xlbmd0aCgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpKSAtICRiZWdpbilcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHZhciAkc2xpY2UgPSBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIHNwZWNpZXNGcm9tTGlzdCh0aGlzLCBhcnJheVNsaWNlLmNhbGwodmFsaWRhdGUodGhpcyksIHN0YXJ0LCBlbmQpKTtcbiAgfTtcblxuICB2YXIgJHNldCA9IGZ1bmN0aW9uIHNldChhcnJheUxpa2UgLyogLCBvZmZzZXQgKi8pIHtcbiAgICB2YWxpZGF0ZSh0aGlzKTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzWzFdLCAxKTtcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgdmFyIHNyYyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHNyYy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaWYgKGxlbiArIG9mZnNldCA+IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHdoaWxlIChpbmRleCA8IGxlbikgdGhpc1tvZmZzZXQgKyBpbmRleF0gPSBzcmNbaW5kZXgrK107XG4gIH07XG5cbiAgdmFyICRpdGVyYXRvcnMgPSB7XG4gICAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICAgIHJldHVybiBhcnJheUVudHJpZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfSxcbiAgICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgICAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5VmFsdWVzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaXNUQUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRhcmdldClcbiAgICAgICYmIHRhcmdldFtUWVBFRF9BUlJBWV1cbiAgICAgICYmIHR5cGVvZiBrZXkgIT0gJ3N5bWJvbCdcbiAgICAgICYmIGtleSBpbiB0YXJnZXRcbiAgICAgICYmIFN0cmluZygra2V5KSA9PSBTdHJpbmcoa2V5KTtcbiAgfTtcbiAgdmFyICRnZXREZXNjID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuIGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICA/IHByb3BlcnR5RGVzYygyLCB0YXJnZXRba2V5XSlcbiAgICAgIDogZ09QRCh0YXJnZXQsIGtleSk7XG4gIH07XG4gIHZhciAkc2V0RGVzYyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgaWYgKGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICAmJiBpc09iamVjdChkZXNjKVxuICAgICAgJiYgaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgICAmJiAhaGFzKGRlc2MsICdnZXQnKVxuICAgICAgJiYgIWhhcyhkZXNjLCAnc2V0JylcbiAgICAgIC8vIFRPRE86IGFkZCB2YWxpZGF0aW9uIGRlc2NyaXB0b3Igdy9vIGNhbGxpbmcgYWNjZXNzb3JzXG4gICAgICAmJiAhZGVzYy5jb25maWd1cmFibGVcbiAgICAgICYmICghaGFzKGRlc2MsICd3cml0YWJsZScpIHx8IGRlc2Mud3JpdGFibGUpXG4gICAgICAmJiAoIWhhcyhkZXNjLCAnZW51bWVyYWJsZScpIHx8IGRlc2MuZW51bWVyYWJsZSlcbiAgICApIHtcbiAgICAgIHRhcmdldFtrZXldID0gZGVzYy52YWx1ZTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSByZXR1cm4gZFAodGFyZ2V0LCBrZXksIGRlc2MpO1xuICB9O1xuXG4gIGlmICghQUxMX0NPTlNUUlVDVE9SUykge1xuICAgICRHT1BELmYgPSAkZ2V0RGVzYztcbiAgICAkRFAuZiA9ICRzZXREZXNjO1xuICB9XG5cbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhQUxMX0NPTlNUUlVDVE9SUywgJ09iamVjdCcsIHtcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXREZXNjLFxuICAgIGRlZmluZVByb3BlcnR5OiAkc2V0RGVzY1xuICB9KTtcblxuICBpZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvU3RyaW5nLmNhbGwoe30pOyB9KSkge1xuICAgIGFycmF5VG9TdHJpbmcgPSBhcnJheVRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHZhciAkVHlwZWRBcnJheVByb3RvdHlwZSQgPSByZWRlZmluZUFsbCh7fSwgcHJvdG8pO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsICRpdGVyYXRvcnMpO1xuICBoaWRlKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgSVRFUkFUT1IsICRpdGVyYXRvcnMudmFsdWVzKTtcbiAgcmVkZWZpbmVBbGwoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCB7XG4gICAgc2xpY2U6ICRzbGljZSxcbiAgICBzZXQ6ICRzZXQsXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uICgpIHsgLyogbm9vcCAqLyB9LFxuICAgIHRvU3RyaW5nOiBhcnJheVRvU3RyaW5nLFxuICAgIHRvTG9jYWxlU3RyaW5nOiAkdG9Mb2NhbGVTdHJpbmdcbiAgfSk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdidWZmZXInLCAnYicpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnYnl0ZU9mZnNldCcsICdvJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlTGVuZ3RoJywgJ2wnKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2xlbmd0aCcsICdlJyk7XG4gIGRQKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgVEFHLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW1RZUEVEX0FSUkFZXTsgfVxuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBCWVRFUywgd3JhcHBlciwgQ0xBTVBFRCkge1xuICAgIENMQU1QRUQgPSAhIUNMQU1QRUQ7XG4gICAgdmFyIE5BTUUgPSBLRVkgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSc7XG4gICAgdmFyIEdFVFRFUiA9ICdnZXQnICsgS0VZO1xuICAgIHZhciBTRVRURVIgPSAnc2V0JyArIEtFWTtcbiAgICB2YXIgVHlwZWRBcnJheSA9IGdsb2JhbFtOQU1FXTtcbiAgICB2YXIgQmFzZSA9IFR5cGVkQXJyYXkgfHwge307XG4gICAgdmFyIFRBQyA9IFR5cGVkQXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheSk7XG4gICAgdmFyIEZPUkNFRCA9ICFUeXBlZEFycmF5IHx8ICEkdHlwZWQuQUJWO1xuICAgIHZhciBPID0ge307XG4gICAgdmFyIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5ICYmIFR5cGVkQXJyYXlbUFJPVE9UWVBFXTtcbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICByZXR1cm4gZGF0YS52W0dFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgc2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGF0Ll9kO1xuICAgICAgaWYgKENMQU1QRUQpIHZhbHVlID0gKHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4ZmYgPyAweGZmIDogdmFsdWUgJiAweGZmO1xuICAgICAgZGF0YS52W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgdmFsdWUsIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIGFkZEVsZW1lbnQgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIGRQKHRoYXQsIGluZGV4LCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBnZXR0ZXIodGhpcywgaW5kZXgpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBzZXR0ZXIodGhpcywgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUsICdfZCcpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgdmFyIGJ1ZmZlciwgYnl0ZUxlbmd0aCwgbGVuZ3RoLCBrbGFzcztcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xuICAgICAgICAgIGxlbmd0aCA9IHRvSW5kZXgoZGF0YSk7XG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciA9IG5ldyAkQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIGJ1ZmZlciA9IGRhdGE7XG4gICAgICAgICAgb2Zmc2V0ID0gdG9PZmZzZXQoJG9mZnNldCwgQllURVMpO1xuICAgICAgICAgIHZhciAkbGVuID0gZGF0YS5ieXRlTGVuZ3RoO1xuICAgICAgICAgIGlmICgkbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgkbGVuICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSAkbGVuIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggPCAwKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSB0b0xlbmd0aCgkbGVuZ3RoKSAqIEJZVEVTO1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggKyBvZmZzZXQgPiAkbGVuKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGhpZGUodGhhdCwgJ19kJywge1xuICAgICAgICAgIGI6IGJ1ZmZlcixcbiAgICAgICAgICBvOiBvZmZzZXQsXG4gICAgICAgICAgbDogYnl0ZUxlbmd0aCxcbiAgICAgICAgICBlOiBsZW5ndGgsXG4gICAgICAgICAgdjogbmV3ICREYXRhVmlldyhidWZmZXIpXG4gICAgICAgIH0pO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIGFkZEVsZW1lbnQodGhhdCwgaW5kZXgrKyk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBjcmVhdGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkKTtcbiAgICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgVHlwZWRBcnJheSk7XG4gICAgfSBlbHNlIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgVHlwZWRBcnJheSgxKTtcbiAgICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoLTEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0pIHx8ICEkaXRlckRldGVjdChmdW5jdGlvbiAoaXRlcikge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KG51bGwpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoMS41KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KGl0ZXIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIH0sIHRydWUpKSB7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXksIE5BTUUpO1xuICAgICAgICB2YXIga2xhc3M7XG4gICAgICAgIC8vIGB3c2AgbW9kdWxlIGJ1ZywgdGVtcG9yYXJpbHkgcmVtb3ZlIHZhbGlkYXRpb24gbGVuZ3RoIGZvciBVaW50OEFycmF5XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvNjQ1XG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHJldHVybiBuZXcgQmFzZSh0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiAkQXJyYXlCdWZmZXIgfHwgKGtsYXNzID0gY2xhc3NvZihkYXRhKSkgPT0gQVJSQVlfQlVGRkVSIHx8IGtsYXNzID09IFNIQVJFRF9CVUZGRVIpIHtcbiAgICAgICAgICByZXR1cm4gJGxlbmd0aCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBCYXNlKGRhdGEsIHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogJG9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpKVxuICAgICAgICAgICAgICA6IG5ldyBCYXNlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChUWVBFRF9BUlJBWSBpbiBkYXRhKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIHJldHVybiAkZnJvbS5jYWxsKFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBhcnJheUZvckVhY2goVEFDICE9PSBGdW5jdGlvbi5wcm90b3R5cGUgPyBnT1BOKEJhc2UpLmNvbmNhdChnT1BOKFRBQykpIDogZ09QTihCYXNlKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gVHlwZWRBcnJheSkpIGhpZGUoVHlwZWRBcnJheSwga2V5LCBCYXNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgICBUeXBlZEFycmF5W1BST1RPVFlQRV0gPSBUeXBlZEFycmF5UHJvdG90eXBlO1xuICAgICAgaWYgKCFMSUJSQVJZKSBUeXBlZEFycmF5UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHlwZWRBcnJheTtcbiAgICB9XG4gICAgdmFyICRuYXRpdmVJdGVyYXRvciA9IFR5cGVkQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdO1xuICAgIHZhciBDT1JSRUNUX0lURVJfTkFNRSA9ICEhJG5hdGl2ZUl0ZXJhdG9yXG4gICAgICAmJiAoJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gJ3ZhbHVlcycgfHwgJG5hdGl2ZUl0ZXJhdG9yLm5hbWUgPT0gdW5kZWZpbmVkKTtcbiAgICB2YXIgJGl0ZXJhdG9yID0gJGl0ZXJhdG9ycy52YWx1ZXM7XG4gICAgaGlkZShUeXBlZEFycmF5LCBUWVBFRF9DT05TVFJVQ1RPUiwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBUWVBFRF9BUlJBWSwgTkFNRSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIERFRl9DT05TVFJVQ1RPUiwgVHlwZWRBcnJheSk7XG5cbiAgICBpZiAoQ0xBTVBFRCA/IG5ldyBUeXBlZEFycmF5KDEpW1RBR10gIT0gTkFNRSA6ICEoVEFHIGluIFR5cGVkQXJyYXlQcm90b3R5cGUpKSB7XG4gICAgICBkUChUeXBlZEFycmF5UHJvdG90eXBlLCBUQUcsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOQU1FOyB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPW05BTUVdID0gVHlwZWRBcnJheTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKFR5cGVkQXJyYXkgIT0gQmFzZSksIE8pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMsIE5BTUUsIHtcbiAgICAgIEJZVEVTX1BFUl9FTEVNRU5UOiBCWVRFU1xuICAgIH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IEJhc2Uub2YuY2FsbChUeXBlZEFycmF5LCAxKTsgfSksIE5BTUUsIHtcbiAgICAgIGZyb206ICRmcm9tLFxuICAgICAgb2Y6ICRvZlxuICAgIH0pO1xuXG4gICAgaWYgKCEoQllURVNfUEVSX0VMRU1FTlQgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QLCBOQU1FLCBwcm90byk7XG5cbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRURfU0VULCBOQU1FLCB7IHNldDogJHNldCB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIUNPUlJFQ1RfSVRFUl9OQU1FLCBOQU1FLCAkaXRlcmF0b3JzKTtcblxuICAgIGlmICghTElCUkFSWSAmJiBUeXBlZEFycmF5UHJvdG90eXBlLnRvU3RyaW5nICE9IGFycmF5VG9TdHJpbmcpIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgPSBhcnJheVRvU3RyaW5nO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgxKS5zbGljZSgpO1xuICAgIH0pLCBOQU1FLCB7IHNsaWNlOiAkc2xpY2UgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gWzEsIDJdLnRvTG9jYWxlU3RyaW5nKCkgIT0gbmV3IFR5cGVkQXJyYXkoWzEsIDJdKS50b0xvY2FsZVN0cmluZygpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5UHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsIDJdKTtcbiAgICB9KSksIE5BTUUsIHsgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZyB9KTtcblxuICAgIEl0ZXJhdG9yc1tOQU1FXSA9IENPUlJFQ1RfSVRFUl9OQU1FID8gJG5hdGl2ZUl0ZXJhdG9yIDogJGl0ZXJhdG9yO1xuICAgIGlmICghTElCUkFSWSAmJiAhQ09SUkVDVF9JVEVSX05BTUUpIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgSVRFUkFUT1IsICRpdGVyYXRvcik7XG4gIH07XG59IGVsc2UgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJHR5cGVkID0gcmVxdWlyZSgnLi9fdHlwZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvSW5kZXggPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcbnZhciBEQVRBX1ZJRVcgPSAnRGF0YVZpZXcnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGghJztcbnZhciBXUk9OR19JTkRFWCA9ICdXcm9uZyBpbmRleCEnO1xudmFyICRBcnJheUJ1ZmZlciA9IGdsb2JhbFtBUlJBWV9CVUZGRVJdO1xudmFyICREYXRhVmlldyA9IGdsb2JhbFtEQVRBX1ZJRVddO1xudmFyIE1hdGggPSBnbG9iYWwuTWF0aDtcbnZhciBSYW5nZUVycm9yID0gZ2xvYmFsLlJhbmdlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93LXJlc3RyaWN0ZWQtbmFtZXNcbnZhciBJbmZpbml0eSA9IGdsb2JhbC5JbmZpbml0eTtcbnZhciBCYXNlQnVmZmVyID0gJEFycmF5QnVmZmVyO1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcbnZhciBCVUZGRVIgPSAnYnVmZmVyJztcbnZhciBCWVRFX0xFTkdUSCA9ICdieXRlTGVuZ3RoJztcbnZhciBCWVRFX09GRlNFVCA9ICdieXRlT2Zmc2V0JztcbnZhciAkQlVGRkVSID0gREVTQ1JJUFRPUlMgPyAnX2InIDogQlVGRkVSO1xudmFyICRMRU5HVEggPSBERVNDUklQVE9SUyA/ICdfbCcgOiBCWVRFX0xFTkdUSDtcbnZhciAkT0ZGU0VUID0gREVTQ1JJUFRPUlMgPyAnX28nIDogQllURV9PRkZTRVQ7XG5cbi8vIElFRUU3NTQgY29udmVyc2lvbnMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9pZWVlNzU0XG5mdW5jdGlvbiBwYWNrSUVFRTc1NCh2YWx1ZSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobkJ5dGVzKTtcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBydCA9IG1MZW4gPT09IDIzID8gcG93KDIsIC0yNCkgLSBwb3coMiwgLTc3KSA6IDA7XG4gIHZhciBpID0gMDtcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgdmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCA/IDEgOiAwO1xuICB2YXIgZSwgbSwgYztcbiAgdmFsdWUgPSBhYnModmFsdWUpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIGlmICh2YWx1ZSAhPSB2YWx1ZSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgbSA9IHZhbHVlICE9IHZhbHVlID8gMSA6IDA7XG4gICAgZSA9IGVNYXg7XG4gIH0gZWxzZSB7XG4gICAgZSA9IGZsb29yKGxvZyh2YWx1ZSkgLyBMTjIpO1xuICAgIGlmICh2YWx1ZSAqIChjID0gcG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS07XG4gICAgICBjICo9IDI7XG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIHBvdygyLCAxIC0gZUJpYXMpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrKztcbiAgICAgIGMgLz0gMjtcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMDtcbiAgICAgIGUgPSBlTWF4O1xuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBwb3coMiwgbUxlbik7XG4gICAgICBlID0gZSArIGVCaWFzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBwb3coMiwgZUJpYXMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSAwO1xuICAgIH1cbiAgfVxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbaSsrXSA9IG0gJiAyNTUsIG0gLz0gMjU2LCBtTGVuIC09IDgpO1xuICBlID0gZSA8PCBtTGVuIHwgbTtcbiAgZUxlbiArPSBtTGVuO1xuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltpKytdID0gZSAmIDI1NSwgZSAvPSAyNTYsIGVMZW4gLT0gOCk7XG4gIGJ1ZmZlclstLWldIHw9IHMgKiAxMjg7XG4gIHJldHVybiBidWZmZXI7XG59XG5mdW5jdGlvbiB1bnBhY2tJRUVFNzU0KGJ1ZmZlciwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgbkJpdHMgPSBlTGVuIC0gNztcbiAgdmFyIGkgPSBuQnl0ZXMgLSAxO1xuICB2YXIgcyA9IGJ1ZmZlcltpLS1dO1xuICB2YXIgZSA9IHMgJiAxMjc7XG4gIHZhciBtO1xuICBzID4+PSA3O1xuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltpXSwgaS0tLCBuQml0cyAtPSA4KTtcbiAgbSA9IGUgJiAoMSA8PCAtbkJpdHMpIC0gMTtcbiAgZSA+Pj0gLW5CaXRzO1xuICBuQml0cyArPSBtTGVuO1xuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltpXSwgaS0tLCBuQml0cyAtPSA4KTtcbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzO1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6IHMgPyAtSW5maW5pdHkgOiBJbmZpbml0eTtcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIHBvdygyLCBtTGVuKTtcbiAgICBlID0gZSAtIGVCaWFzO1xuICB9IHJldHVybiAocyA/IC0xIDogMSkgKiBtICogcG93KDIsIGUgLSBtTGVuKTtcbn1cblxuZnVuY3Rpb24gdW5wYWNrSTMyKGJ5dGVzKSB7XG4gIHJldHVybiBieXRlc1szXSA8PCAyNCB8IGJ5dGVzWzJdIDw8IDE2IHwgYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdO1xufVxuZnVuY3Rpb24gcGFja0k4KGl0KSB7XG4gIHJldHVybiBbaXQgJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tJMTYoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmYsIGl0ID4+IDggJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tJMzIoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmYsIGl0ID4+IDggJiAweGZmLCBpdCA+PiAxNiAmIDB4ZmYsIGl0ID4+IDI0ICYgMHhmZl07XG59XG5mdW5jdGlvbiBwYWNrRjY0KGl0KSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChpdCwgNTIsIDgpO1xufVxuZnVuY3Rpb24gcGFja0YzMihpdCkge1xuICByZXR1cm4gcGFja0lFRUU3NTQoaXQsIDIzLCA0KTtcbn1cblxuZnVuY3Rpb24gYWRkR2V0dGVyKEMsIGtleSwgaW50ZXJuYWwpIHtcbiAgZFAoQ1tQUk9UT1RZUEVdLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW2ludGVybmFsXTsgfSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0KHZpZXcsIGJ5dGVzLCBpbmRleCwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4O1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KG51bUluZGV4KTtcbiAgaWYgKGludEluZGV4ICsgYnl0ZXMgPiB2aWV3WyRMRU5HVEhdKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYjtcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyB2aWV3WyRPRkZTRVRdO1xuICB2YXIgcGFjayA9IHN0b3JlLnNsaWNlKHN0YXJ0LCBzdGFydCArIGJ5dGVzKTtcbiAgcmV0dXJuIGlzTGl0dGxlRW5kaWFuID8gcGFjayA6IHBhY2sucmV2ZXJzZSgpO1xufVxuZnVuY3Rpb24gc2V0KHZpZXcsIGJ5dGVzLCBpbmRleCwgY29udmVyc2lvbiwgdmFsdWUsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBudW1JbmRleCA9ICtpbmRleDtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChudW1JbmRleCk7XG4gIGlmIChpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBzdG9yZSA9IHZpZXdbJEJVRkZFUl0uX2I7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgdmlld1skT0ZGU0VUXTtcbiAgdmFyIHBhY2sgPSBjb252ZXJzaW9uKCt2YWx1ZSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXM7IGkrKykgc3RvcmVbc3RhcnQgKyBpXSA9IHBhY2tbaXNMaXR0bGVFbmRpYW4gPyBpIDogYnl0ZXMgLSBpIC0gMV07XG59XG5cbmlmICghJHR5cGVkLkFCVikge1xuICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRvSW5kZXgobGVuZ3RoKTtcbiAgICB0aGlzLl9iID0gYXJyYXlGaWxsLmNhbGwobmV3IEFycmF5KGJ5dGVMZW5ndGgpLCAwKTtcbiAgICB0aGlzWyRMRU5HVEhdID0gYnl0ZUxlbmd0aDtcbiAgfTtcblxuICAkRGF0YVZpZXcgPSBmdW5jdGlvbiBEYXRhVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICREYXRhVmlldywgREFUQV9WSUVXKTtcbiAgICBhbkluc3RhbmNlKGJ1ZmZlciwgJEFycmF5QnVmZmVyLCBEQVRBX1ZJRVcpO1xuICAgIHZhciBidWZmZXJMZW5ndGggPSBidWZmZXJbJExFTkdUSF07XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihieXRlT2Zmc2V0KTtcbiAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkID8gYnVmZmVyTGVuZ3RoIC0gb2Zmc2V0IDogdG9MZW5ndGgoYnl0ZUxlbmd0aCk7XG4gICAgaWYgKG9mZnNldCArIGJ5dGVMZW5ndGggPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICB0aGlzWyRCVUZGRVJdID0gYnVmZmVyO1xuICAgIHRoaXNbJE9GRlNFVF0gPSBvZmZzZXQ7XG4gICAgdGhpc1skTEVOR1RIXSA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgaWYgKERFU0NSSVBUT1JTKSB7XG4gICAgYWRkR2V0dGVyKCRBcnJheUJ1ZmZlciwgQllURV9MRU5HVEgsICdfbCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJVRkZFUiwgJ19iJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9MRU5HVEgsICdfbCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsIEJZVEVfT0ZGU0VULCAnX28nKTtcbiAgfVxuXG4gIHJlZGVmaW5lQWxsKCREYXRhVmlld1tQUk9UT1RZUEVdLCB7XG4gICAgZ2V0SW50ODogZnVuY3Rpb24gZ2V0SW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdIDw8IDI0ID4+IDI0O1xuICAgIH0sXG4gICAgZ2V0VWludDg6IGZ1bmN0aW9uIGdldFVpbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF07XG4gICAgfSxcbiAgICBnZXRJbnQxNjogZnVuY3Rpb24gZ2V0SW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSk7XG4gICAgICByZXR1cm4gKGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXSkgPDwgMTYgPj4gMTY7XG4gICAgfSxcbiAgICBnZXRVaW50MTY6IGZ1bmN0aW9uIGdldFVpbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKTtcbiAgICAgIHJldHVybiBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG4gICAgfSxcbiAgICBnZXRJbnQzMjogZnVuY3Rpb24gZ2V0SW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSk7XG4gICAgfSxcbiAgICBnZXRVaW50MzI6IGZ1bmN0aW9uIGdldFVpbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSTMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pKSA+Pj4gMDtcbiAgICB9LFxuICAgIGdldEZsb2F0MzI6IGZ1bmN0aW9uIGdldEZsb2F0MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSksIDIzLCA0KTtcbiAgICB9LFxuICAgIGdldEZsb2F0NjQ6IGZ1bmN0aW9uIGdldEZsb2F0NjQoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSksIDUyLCA4KTtcbiAgICB9LFxuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSTgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0SW50MTY6IGZ1bmN0aW9uIHNldEludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0kxNiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRVaW50MTY6IGZ1bmN0aW9uIHNldFVpbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJMTYsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0SW50MzI6IGZ1bmN0aW9uIHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRVaW50MzI6IGZ1bmN0aW9uIHNldFVpbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0RmxvYXQzMjogZnVuY3Rpb24gc2V0RmxvYXQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tGMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0RmxvYXQ2NDogZnVuY3Rpb24gc2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIHBhY2tGNjQsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICBpZiAoIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAkQXJyYXlCdWZmZXIoMSk7XG4gIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigtMSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gIH0pIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgJEFycmF5QnVmZmVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbmV3ICRBcnJheUJ1ZmZlcigxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoTmFOKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICByZXR1cm4gJEFycmF5QnVmZmVyLm5hbWUgIT0gQVJSQVlfQlVGRkVSO1xuICB9KSkge1xuICAgICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIpO1xuICAgICAgcmV0dXJuIG5ldyBCYXNlQnVmZmVyKHRvSW5kZXgobGVuZ3RoKSk7XG4gICAgfTtcbiAgICB2YXIgQXJyYXlCdWZmZXJQcm90byA9ICRBcnJheUJ1ZmZlcltQUk9UT1RZUEVdID0gQmFzZUJ1ZmZlcltQUk9UT1RZUEVdO1xuICAgIGZvciAodmFyIGtleXMgPSBnT1BOKEJhc2VCdWZmZXIpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7KSB7XG4gICAgICBpZiAoISgoa2V5ID0ga2V5c1tqKytdKSBpbiAkQXJyYXlCdWZmZXIpKSBoaWRlKCRBcnJheUJ1ZmZlciwga2V5LCBCYXNlQnVmZmVyW2tleV0pO1xuICAgIH1cbiAgICBpZiAoIUxJQlJBUlkpIEFycmF5QnVmZmVyUHJvdG8uY29uc3RydWN0b3IgPSAkQXJyYXlCdWZmZXI7XG4gIH1cbiAgLy8gaU9TIFNhZmFyaSA3LnggYnVnXG4gIHZhciB2aWV3ID0gbmV3ICREYXRhVmlldyhuZXcgJEFycmF5QnVmZmVyKDIpKTtcbiAgdmFyICRzZXRJbnQ4ID0gJERhdGFWaWV3W1BST1RPVFlQRV0uc2V0SW50ODtcbiAgdmlldy5zZXRJbnQ4KDAsIDIxNDc0ODM2NDgpO1xuICB2aWV3LnNldEludDgoMSwgMjE0NzQ4MzY0OSk7XG4gIGlmICh2aWV3LmdldEludDgoMCkgfHwgIXZpZXcuZ2V0SW50OCgxKSkgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfVxuICB9LCB0cnVlKTtcbn1cbnNldFRvU3RyaW5nVGFnKCRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbnNldFRvU3RyaW5nVGFnKCREYXRhVmlldywgREFUQV9WSUVXKTtcbmhpZGUoJERhdGFWaWV3W1BST1RPVFlQRV0sICR0eXBlZC5WSUVXLCB0cnVlKTtcbmV4cG9ydHNbQVJSQVlfQlVGRkVSXSA9ICRBcnJheUJ1ZmZlcjtcbmV4cG9ydHNbREFUQV9WSUVXXSA9ICREYXRhVmlldztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFRZUEVEID0gdWlkKCd0eXBlZF9hcnJheScpO1xudmFyIFZJRVcgPSB1aWQoJ3ZpZXcnKTtcbnZhciBBQlYgPSAhIShnbG9iYWwuQXJyYXlCdWZmZXIgJiYgZ2xvYmFsLkRhdGFWaWV3KTtcbnZhciBDT05TVFIgPSBBQlY7XG52YXIgaSA9IDA7XG52YXIgbCA9IDk7XG52YXIgVHlwZWQ7XG5cbnZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JzID0gKFxuICAnSW50OEFycmF5LFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXknXG4pLnNwbGl0KCcsJyk7XG5cbndoaWxlIChpIDwgbCkge1xuICBpZiAoVHlwZWQgPSBnbG9iYWxbVHlwZWRBcnJheUNvbnN0cnVjdG9yc1tpKytdXSkge1xuICAgIGhpZGUoVHlwZWQucHJvdG90eXBlLCBUWVBFRCwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICB9IGVsc2UgQ09OU1RSID0gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBQlY6IEFCVixcbiAgQ09OU1RSOiBDT05TVFIsXG4gIFRZUEVEOiBUWVBFRCxcbiAgVklFVzogVklFV1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG5hdmlnYXRvciA9IGdsb2JhbC5uYXZpZ2F0b3I7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQgfHwgJyc7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBUWVBFKSB7XG4gIGlmICghaXNPYmplY3QoaXQpIHx8IGl0Ll90ICE9PSBUWVBFKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuIiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmdyL1JleEV4cC5lc2NhcGVcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHJlID0gcmVxdWlyZSgnLi9fcmVwbGFjZXInKSgvW1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWdFeHAnLCB7IGVzY2FwZTogZnVuY3Rpb24gZXNjYXBlKGl0KSB7IHJldHVybiAkcmUoaXQpOyB9IH0pO1xuIiwiLy8gMjIuMS4zLjMgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCwgZW5kID0gdGhpcy5sZW5ndGgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5JywgeyBjb3B5V2l0aGluOiByZXF1aXJlKCcuL19hcnJheS1jb3B5LXdpdGhpbicpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnY29weVdpdGhpbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZXZlcnkgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNCk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5ldmVyeSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjUgLyAxNS40LjQuMTYgQXJyYXkucHJvdG90eXBlLmV2ZXJ5KGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIvLyAyMi4xLjMuNiBBcnJheS5wcm90b3R5cGUuZmlsbCh2YWx1ZSwgc3RhcnQgPSAwLCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGZpbGw6IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKSB9KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2ZpbGwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgyKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmZpbHRlciwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjcgLyAxNS40LjQuMjAgQXJyYXkucHJvdG90eXBlLmZpbHRlcihjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjkgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleChwcmVkaWNhdGUsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDYpO1xudmFyIEtFWSA9ICdmaW5kSW5kZXgnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKShLRVkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjggQXJyYXkucHJvdG90eXBlLmZpbmQocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg1KTtcbnZhciBLRVkgPSAnZmluZCc7XG52YXIgZm9yY2VkID0gdHJ1ZTtcbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoS0VZIGluIFtdKSBBcnJheSgxKVtLRVldKGZ1bmN0aW9uICgpIHsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgU1RSSUNUID0gcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmZvckVhY2gsIHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFTVFJJQ1QsICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjEwIC8gMTUuNC40LjE4IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcbiAgICBpZiAobWFwcGluZykgbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZiAoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEMoKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yIChyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyICRuYXRpdmUgPSBbXS5pbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjExIC8gMTUuNC40LjE0IEFycmF5LnByb3RvdHlwZS5pbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiBORUdBVElWRV9aRVJPXG4gICAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgICA/ICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwXG4gICAgICA6ICRpbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiLy8gMjIuMS4yLjIgLyAxNS40LjMuMiBBcnJheS5pc0FycmF5KGFyZylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnQXJyYXknLCB7IGlzQXJyYXk6IHJlcXVpcmUoJy4vX2lzLWFycmF5JykgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5qb2luKHNlcGFyYXRvcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5Sm9pbiA9IFtdLmpvaW47XG5cbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBzdHJpbmdzXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChyZXF1aXJlKCcuL19pb2JqZWN0JykgIT0gT2JqZWN0IHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoYXJyYXlKb2luKSksICdBcnJheScsIHtcbiAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodG9JT2JqZWN0KHRoaXMpLCBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IHNlcGFyYXRvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgJG5hdGl2ZSA9IFtdLmxhc3RJbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5sYXN0SW5kZXhPZigxLCAtMCkgPCAwO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChORUdBVElWRV9aRVJPIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJG5hdGl2ZSkpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNCAvIDE1LjQuNC4xNSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBsYXN0SW5kZXhPZjogZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IEBbKi0xXSAqLykge1xuICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICBpZiAoTkVHQVRJVkVfWkVSTykgcmV0dXJuICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwO1xuICAgIHZhciBPID0gdG9JT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIGluZGV4ID0gTWF0aC5taW4oaW5kZXgsIHRvSW50ZWdlcihhcmd1bWVudHNbMV0pKTtcbiAgICBpZiAoaW5kZXggPCAwKSBpbmRleCA9IGxlbmd0aCArIGluZGV4O1xuICAgIGZvciAoO2luZGV4ID49IDA7IGluZGV4LS0pIGlmIChpbmRleCBpbiBPKSBpZiAoT1tpbmRleF0gPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBpbmRleCB8fCAwO1xuICAgIHJldHVybiAtMTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5tYXAsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNSAvIDE1LjQuNC4xOSBBcnJheS5wcm90b3R5cGUubWFwKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKEFycmF5Lm9mLmNhbGwoRikgaW5zdGFuY2VvZiBGKTtcbn0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4zIEFycmF5Lm9mKCAuLi5pdGVtcylcbiAgb2Y6IGZ1bmN0aW9uIG9mKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gbmV3ICh0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5KShhTGVuKTtcbiAgICB3aGlsZSAoYUxlbiA+IGluZGV4KSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHJlc3VsdC5sZW5ndGggPSBhTGVuO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2VSaWdodCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE5IC8gMTUuNC40LjIyIEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodChjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCB0cnVlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheS1yZWR1Y2UnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnJlZHVjZSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE4IC8gMTUuNC40LjIxIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UoY2FsbGJhY2tmbiBbLCBpbml0aWFsVmFsdWVdKVxuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCBmYWxzZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi9faHRtbCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhcnJheVNsaWNlID0gW10uc2xpY2U7XG5cbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBFUzMgc3RyaW5ncyBhbmQgRE9NIG9iamVjdHNcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIGlmIChodG1sKSBhcnJheVNsaWNlLmNhbGwoaHRtbCk7XG59KSwgJ0FycmF5Jywge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2UoYmVnaW4sIGVuZCkge1xuICAgIHZhciBsZW4gPSB0b0xlbmd0aCh0aGlzLmxlbmd0aCk7XG4gICAgdmFyIGtsYXNzID0gY29mKHRoaXMpO1xuICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kO1xuICAgIGlmIChrbGFzcyA9PSAnQXJyYXknKSByZXR1cm4gYXJyYXlTbGljZS5jYWxsKHRoaXMsIGJlZ2luLCBlbmQpO1xuICAgIHZhciBzdGFydCA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuKTtcbiAgICB2YXIgdXBUbyA9IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbik7XG4gICAgdmFyIHNpemUgPSB0b0xlbmd0aCh1cFRvIC0gc3RhcnQpO1xuICAgIHZhciBjbG9uZWQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSBjbG9uZWRbaV0gPSBrbGFzcyA9PSAnU3RyaW5nJ1xuICAgICAgPyB0aGlzLmNoYXJBdChzdGFydCArIGkpXG4gICAgICA6IHRoaXNbc3RhcnQgKyBpXTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5zb21lLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjMgLyAxNS40LjQuMTcgQXJyYXkucHJvdG90eXBlLnNvbWUoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSwgYUZ1bmN0aW9uKGNvbXBhcmVmbikpO1xuICB9XG59KTtcbiIsInJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ0FycmF5Jyk7XG4iLCIvLyAyMC4zLjMuMSAvIDE1LjkuNC40IERhdGUubm93KClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRGF0ZScsIHsgbm93OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgfSB9KTtcbiIsIi8vIDIwLjMuNC4zNiAvIDE1LjkuNS40MyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZygpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSVNPU3RyaW5nID0gcmVxdWlyZSgnLi9fZGF0ZS10by1pc28tc3RyaW5nJyk7XG5cbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgaGFzIGEgYnJva2VuIGltcGxlbWVudGF0aW9uc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgIT09IHRvSVNPU3RyaW5nKSwgJ0RhdGUnLCB7XG4gIHRvSVNPU3RyaW5nOiB0b0lTT1N0cmluZ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKE5hTikudG9KU09OKCkgIT09IG51bGxcbiAgICB8fCBEYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7IHRvSVNPU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9IH0pICE9PSAxO1xufSksICdEYXRlJywge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgcHYgPSB0b1ByaW1pdGl2ZShPKTtcbiAgICByZXR1cm4gdHlwZW9mIHB2ID09ICdudW1iZXInICYmICFpc0Zpbml0ZShwdikgPyBudWxsIDogTy50b0lTT1N0cmluZygpO1xuICB9XG59KTtcbiIsInZhciBUT19QUklNSVRJVkUgPSByZXF1aXJlKCcuL193a3MnKSgndG9QcmltaXRpdmUnKTtcbnZhciBwcm90byA9IERhdGUucHJvdG90eXBlO1xuXG5pZiAoIShUT19QUklNSVRJVkUgaW4gcHJvdG8pKSByZXF1aXJlKCcuL19oaWRlJykocHJvdG8sIFRPX1BSSU1JVElWRSwgcmVxdWlyZSgnLi9fZGF0ZS10by1wcmltaXRpdmUnKSk7XG4iLCJ2YXIgRGF0ZVByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBEYXRlUHJvdG9bVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZiAobmV3IERhdGUoTmFOKSArICcnICE9IElOVkFMSURfREFURSkge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKERhdGVQcm90bywgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAkdG9TdHJpbmcuY2FsbCh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG4iLCIvLyAxOS4yLjMuMiAvIDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKHRoaXNBcmcsIGFyZ3MuLi4pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0Z1bmN0aW9uJywgeyBiaW5kOiByZXF1aXJlKCcuL19iaW5kJykgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBIQVNfSU5TVEFOQ0UgPSByZXF1aXJlKCcuL193a3MnKSgnaGFzSW5zdGFuY2UnKTtcbnZhciBGdW5jdGlvblByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gMTkuMi4zLjYgRnVuY3Rpb24ucHJvdG90eXBlW0BAaGFzSW5zdGFuY2VdKFYpXG5pZiAoIShIQVNfSU5TVEFOQ0UgaW4gRnVuY3Rpb25Qcm90bykpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoRnVuY3Rpb25Qcm90bywgSEFTX0lOU1RBTkNFLCB7IHZhbHVlOiBmdW5jdGlvbiAoTykge1xuICBpZiAodHlwZW9mIHRoaXMgIT0gJ2Z1bmN0aW9uJyB8fCAhaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFpc09iamVjdCh0aGlzLnByb3RvdHlwZSkpIHJldHVybiBPIGluc3RhbmNlb2YgdGhpcztcbiAgLy8gZm9yIGVudmlyb25tZW50IHcvbyBuYXRpdmUgYEBAaGFzSW5zdGFuY2VgIGxvZ2ljIGVub3VnaCBgaW5zdGFuY2VvZmAsIGJ1dCBhZGQgdGhpczpcbiAgd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSkgaWYgKHRoaXMucHJvdG90eXBlID09PSBPKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufSB9KTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgRlByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyAxOS4yLjQuMiBuYW1lXG5OQU1FIGluIEZQcm90byB8fCByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIGRQKEZQcm90bywgTkFNRSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKCcnICsgdGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIE1BUCA9ICdNYXAnO1xuXG4vLyAyMy4xIE1hcCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShNQVAsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIE1hcCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjEuMy42IE1hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gc3Ryb25nLmdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSk7XG4gICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5LnY7XG4gIH0sXG4gIC8vIDIzLjEuMy45IE1hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpXG4gIHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih2YWxpZGF0ZSh0aGlzLCBNQVApLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZywgdHJ1ZSk7XG4iLCIvLyAyMC4yLjIuMyBNYXRoLmFjb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGxvZzFwID0gcmVxdWlyZSgnLi9fbWF0aC1sb2cxcCcpO1xudmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG52YXIgJGFjb3NoID0gTWF0aC5hY29zaDtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhY29zaFxuICAvLyBWOCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNTA5XG4gICYmIE1hdGguZmxvb3IoJGFjb3NoKE51bWJlci5NQVhfVkFMVUUpKSA9PSA3MTBcbiAgLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFjb3NoKEluZmluaXR5KSAtPiBOYU5cbiAgJiYgJGFjb3NoKEluZmluaXR5KSA9PSBJbmZpbml0eVxuKSwgJ01hdGgnLCB7XG4gIGFjb3NoOiBmdW5jdGlvbiBhY29zaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpIDwgMSA/IE5hTiA6IHggPiA5NDkwNjI2NS42MjQyNTE1NlxuICAgICAgPyBNYXRoLmxvZyh4KSArIE1hdGguTE4yXG4gICAgICA6IGxvZzFwKHggLSAxICsgc3FydCh4IC0gMSkgKiBzcXJ0KHggKyAxKSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjUgTWF0aC5hc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXNpbmggPSBNYXRoLmFzaW5oO1xuXG5mdW5jdGlvbiBhc2luaCh4KSB7XG4gIHJldHVybiAhaXNGaW5pdGUoeCA9ICt4KSB8fCB4ID09IDAgPyB4IDogeCA8IDAgPyAtYXNpbmgoLXgpIDogTWF0aC5sb2coeCArIE1hdGguc3FydCh4ICogeCArIDEpKTtcbn1cblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFzaW5oKDApIC0+IC0wXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFzaW5oICYmIDEgLyAkYXNpbmgoMCkgPiAwKSwgJ01hdGgnLCB7IGFzaW5oOiBhc2luaCB9KTtcbiIsIi8vIDIwLjIuMi43IE1hdGguYXRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGF0YW5oICYmIDEgLyAkYXRhbmgoLTApIDwgMCksICdNYXRoJywge1xuICBhdGFuaDogZnVuY3Rpb24gYXRhbmgoeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IE1hdGgubG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjkgTWF0aC5jYnJ0KHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTEgTWF0aC5jbHozMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjbHozMjogZnVuY3Rpb24gY2x6MzIoeCkge1xuICAgIHJldHVybiAoeCA+Pj49IDApID8gMzEgLSBNYXRoLmZsb29yKE1hdGgubG9nKHggKyAwLjUpICogTWF0aC5MT0cyRSkgOiAzMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTIgTWF0aC5jb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNvc2g6IGZ1bmN0aW9uIGNvc2goeCkge1xuICAgIHJldHVybiAoZXhwKHggPSAreCkgKyBleHAoLXgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICgkZXhwbTEgIT0gTWF0aC5leHBtMSksICdNYXRoJywgeyBleHBtMTogJGV4cG0xIH0pO1xuIiwiLy8gMjAuMi4yLjE2IE1hdGguZnJvdW5kKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGZyb3VuZDogcmVxdWlyZSgnLi9fbWF0aC1mcm91bmQnKSB9KTtcbiIsIi8vIDIwLjIuMi4xNyBNYXRoLmh5cG90KFt2YWx1ZTFbLCB2YWx1ZTJbLCDigKYgXV1dKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBoeXBvdDogZnVuY3Rpb24gaHlwb3QodmFsdWUxLCB2YWx1ZTIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogTWF0aC5zcXJ0KHN1bSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE4IE1hdGguaW11bCh4LCB5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkaW11bCgweGZmZmZmZmZmLCA1KSAhPSAtNSB8fCAkaW11bC5sZW5ndGggIT0gMjtcbn0pLCAnTWF0aCcsIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpICogTWF0aC5MT0cxMEU7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjIwIE1hdGgubG9nMXAoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgbG9nMXA6IHJlcXVpcmUoJy4vX21hdGgtbG9nMXAnKSB9KTtcbiIsIi8vIDIwLjIuMi4yMiBNYXRoLmxvZzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgbG9nMjogZnVuY3Rpb24gbG9nMih4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpIC8gTWF0aC5MTjI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduOiByZXF1aXJlKCcuL19tYXRoLXNpZ24nKSB9KTtcbiIsIi8vIDIwLjIuMi4zMCBNYXRoLnNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJyk7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbi8vIFY4IG5lYXIgQ2hyb21pdW0gMzggaGFzIGEgcHJvYmxlbSB3aXRoIHZlcnkgc21hbGwgbnVtYmVyc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFNYXRoLnNpbmgoLTJlLTE3KSAhPSAtMmUtMTc7XG59KSwgJ01hdGgnLCB7XG4gIHNpbmg6IGZ1bmN0aW9uIHNpbmgoeCkge1xuICAgIHJldHVybiBNYXRoLmFicyh4ID0gK3gpIDwgMVxuICAgICAgPyAoZXhwbTEoeCkgLSBleHBtMSgteCkpIC8gMlxuICAgICAgOiAoZXhwKHggLSAxKSAtIGV4cCgteCAtIDEpKSAqIChNYXRoLkUgLyAyKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMzMgTWF0aC50YW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRhbmg6IGZ1bmN0aW9uIHRhbmgoeCkge1xuICAgIHZhciBhID0gZXhwbTEoeCA9ICt4KTtcbiAgICB2YXIgYiA9IGV4cG0xKC14KTtcbiAgICByZXR1cm4gYSA9PSBJbmZpbml0eSA/IDEgOiBiID09IEluZmluaXR5ID8gLTEgOiAoYSAtIGIpIC8gKGV4cCh4KSArIGV4cCgteCkpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4zNCBNYXRoLnRydW5jKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIE5VTUJFUiA9ICdOdW1iZXInO1xudmFyICROdW1iZXIgPSBnbG9iYWxbTlVNQkVSXTtcbnZhciBCYXNlID0gJE51bWJlcjtcbnZhciBwcm90byA9ICROdW1iZXIucHJvdG90eXBlO1xuLy8gT3BlcmEgfjEyIGhhcyBicm9rZW4gT2JqZWN0I3RvU3RyaW5nXG52YXIgQlJPS0VOX0NPRiA9IGNvZihyZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykocHJvdG8pKSA9PSBOVU1CRVI7XG52YXIgVFJJTSA9ICd0cmltJyBpbiBTdHJpbmcucHJvdG90eXBlO1xuXG4vLyA3LjEuMyBUb051bWJlcihhcmd1bWVudClcbnZhciB0b051bWJlciA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgZmFsc2UpO1xuICBpZiAodHlwZW9mIGl0ID09ICdzdHJpbmcnICYmIGl0Lmxlbmd0aCA+IDIpIHtcbiAgICBpdCA9IFRSSU0gPyBpdC50cmltKCkgOiAkdHJpbShpdCwgMyk7XG4gICAgdmFyIGZpcnN0ID0gaXQuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgdGhpcmQsIHJhZGl4LCBtYXhDb2RlO1xuICAgIGlmIChmaXJzdCA9PT0gNDMgfHwgZmlyc3QgPT09IDQ1KSB7XG4gICAgICB0aGlyZCA9IGl0LmNoYXJDb2RlQXQoMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChpdC5jaGFyQ29kZUF0KDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBkaWdpdHMgPSBpdC5zbGljZSgyKSwgaSA9IDAsIGwgPSBkaWdpdHMubGVuZ3RoLCBjb2RlOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvZGUgPSBkaWdpdHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgLy8gcGFyc2VJbnQgcGFyc2VzIGEgc3RyaW5nIHRvIGEgZmlyc3QgdW5hdmFpbGFibGUgc3ltYm9sXG4gICAgICAgIC8vIGJ1dCBUb051bWJlciBzaG91bGQgcmV0dXJuIE5hTiBpZiBhIHN0cmluZyBjb250YWlucyB1bmF2YWlsYWJsZSBzeW1ib2xzXG4gICAgICAgIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IG1heENvZGUpIHJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbmlmICghJE51bWJlcignIDBvMScpIHx8ICEkTnVtYmVyKCcwYjEnKSB8fCAkTnVtYmVyKCcrMHgxJykpIHtcbiAgJE51bWJlciA9IGZ1bmN0aW9uIE51bWJlcih2YWx1ZSkge1xuICAgIHZhciBpdCA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IHZhbHVlO1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4gdGhhdCBpbnN0YW5jZW9mICROdW1iZXJcbiAgICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgICAgJiYgKEJST0tFTl9DT0YgPyBmYWlscyhmdW5jdGlvbiAoKSB7IHByb3RvLnZhbHVlT2YuY2FsbCh0aGF0KTsgfSkgOiBjb2YodGhhdCkgIT0gTlVNQkVSKVxuICAgICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKHRvTnVtYmVyKGl0KSksIHRoYXQsICROdW1iZXIpIDogdG9OdW1iZXIoaXQpO1xuICB9O1xuICBmb3IgKHZhciBrZXlzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUE4oQmFzZSkgOiAoXG4gICAgLy8gRVMzOlxuICAgICdNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSwnICtcbiAgICAvLyBFUzYgKGluIGNhc2UsIGlmIG1vZHVsZXMgd2l0aCBFUzYgTnVtYmVyIHN0YXRpY3MgcmVxdWlyZWQgYmVmb3JlKTpcbiAgICAnRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLCcgK1xuICAgICdNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyJ1xuICApLnNwbGl0KCcsJyksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajsgaisrKSB7XG4gICAgaWYgKGhhcyhCYXNlLCBrZXkgPSBrZXlzW2pdKSAmJiAhaGFzKCROdW1iZXIsIGtleSkpIHtcbiAgICAgIGRQKCROdW1iZXIsIGtleSwgZ09QRChCYXNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbiAgJE51bWJlci5wcm90b3R5cGUgPSBwcm90bztcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkTnVtYmVyO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgTlVNQkVSLCAkTnVtYmVyKTtcbn1cbiIsIi8vIDIwLjEuMi4xIE51bWJlci5FUFNJTE9OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgRVBTSUxPTjogTWF0aC5wb3coMiwgLTUyKSB9KTtcbiIsIi8vIDIwLjEuMi4yIE51bWJlci5pc0Zpbml0ZShudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBfaXNGaW5pdGUoaXQpO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuIiwiLy8gMjAuMS4yLjQgTnVtYmVyLmlzTmFOKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc05hTjogZnVuY3Rpb24gaXNOYU4obnVtYmVyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiBudW1iZXIgIT0gbnVtYmVyO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi41IE51bWJlci5pc1NhZmVJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7XG4iLCIvLyAyMC4xLjIuNiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmYgfSk7XG4iLCIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxZmZmZmZmZmZmZmZmZiB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMjAuMS4yLjEyIE51bWJlci5wYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE51bWJlci5wYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0KSwgJ051bWJlcicsIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX3BhcnNlLWludCcpO1xuLy8gMjAuMS4yLjEzIE51bWJlci5wYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlSW50ICE9ICRwYXJzZUludCksICdOdW1iZXInLCB7IHBhcnNlSW50OiAkcGFyc2VJbnQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuL19hLW51bWJlci12YWx1ZScpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKTtcbnZhciAkdG9GaXhlZCA9IDEuMC50b0ZpeGVkO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBkYXRhID0gWzAsIDAsIDAsIDAsIDAsIDBdO1xudmFyIEVSUk9SID0gJ051bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnO1xudmFyIFpFUk8gPSAnMCc7XG5cbnZhciBtdWx0aXBseSA9IGZ1bmN0aW9uIChuLCBjKSB7XG4gIHZhciBpID0gLTE7XG4gIHZhciBjMiA9IGM7XG4gIHdoaWxlICgrK2kgPCA2KSB7XG4gICAgYzIgKz0gbiAqIGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xudmFyIGRpdmlkZSA9IGZ1bmN0aW9uIChuKSB7XG4gIHZhciBpID0gNjtcbiAgdmFyIGMgPSAwO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBjICs9IGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGZsb29yKGMgLyBuKTtcbiAgICBjID0gKGMgJSBuKSAqIDFlNztcbiAgfVxufTtcbnZhciBudW1Ub1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGkgPSA2O1xuICB2YXIgcyA9ICcnO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBpZiAocyAhPT0gJycgfHwgaSA9PT0gMCB8fCBkYXRhW2ldICE9PSAwKSB7XG4gICAgICB2YXIgdCA9IFN0cmluZyhkYXRhW2ldKTtcbiAgICAgIHMgPSBzID09PSAnJyA/IHQgOiBzICsgcmVwZWF0LmNhbGwoWkVSTywgNyAtIHQubGVuZ3RoKSArIHQ7XG4gICAgfVxuICB9IHJldHVybiBzO1xufTtcbnZhciBwb3cgPSBmdW5jdGlvbiAoeCwgbiwgYWNjKSB7XG4gIHJldHVybiBuID09PSAwID8gYWNjIDogbiAlIDIgPT09IDEgPyBwb3coeCwgbiAtIDEsIGFjYyAqIHgpIDogcG93KHggKiB4LCBuIC8gMiwgYWNjKTtcbn07XG52YXIgbG9nID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG4gPSAwO1xuICB2YXIgeDIgPSB4O1xuICB3aGlsZSAoeDIgPj0gNDA5Nikge1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSAoeDIgPj0gMikge1xuICAgIG4gKz0gMTtcbiAgICB4MiAvPSAyO1xuICB9IHJldHVybiBuO1xufTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoISEkdG9GaXhlZCAmJiAoXG4gIDAuMDAwMDgudG9GaXhlZCgzKSAhPT0gJzAuMDAwJyB8fFxuICAwLjkudG9GaXhlZCgwKSAhPT0gJzEnIHx8XG4gIDEuMjU1LnRvRml4ZWQoMikgIT09ICcxLjI1JyB8fFxuICAxMDAwMDAwMDAwMDAwMDAwMTI4LjAudG9GaXhlZCgwKSAhPT0gJzEwMDAwMDAwMDAwMDAwMDAxMjgnXG4pIHx8ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvRml4ZWQuY2FsbCh7fSk7XG59KSksICdOdW1iZXInLCB7XG4gIHRvRml4ZWQ6IGZ1bmN0aW9uIHRvRml4ZWQoZnJhY3Rpb25EaWdpdHMpIHtcbiAgICB2YXIgeCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCBFUlJPUik7XG4gICAgdmFyIGYgPSB0b0ludGVnZXIoZnJhY3Rpb25EaWdpdHMpO1xuICAgIHZhciBzID0gJyc7XG4gICAgdmFyIG0gPSBaRVJPO1xuICAgIHZhciBlLCB6LCBqLCBrO1xuICAgIGlmIChmIDwgMCB8fCBmID4gMjApIHRocm93IFJhbmdlRXJyb3IoRVJST1IpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoeCAhPSB4KSByZXR1cm4gJ05hTic7XG4gICAgaWYgKHggPD0gLTFlMjEgfHwgeCA+PSAxZTIxKSByZXR1cm4gU3RyaW5nKHgpO1xuICAgIGlmICh4IDwgMCkge1xuICAgICAgcyA9ICctJztcbiAgICAgIHggPSAteDtcbiAgICB9XG4gICAgaWYgKHggPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyh4ICogcG93KDIsIDY5LCAxKSkgLSA2OTtcbiAgICAgIHogPSBlIDwgMCA/IHggKiBwb3coMiwgLWUsIDEpIDogeCAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIGogPSBmO1xuICAgICAgICB3aGlsZSAoaiA+PSA3KSB7XG4gICAgICAgICAgbXVsdGlwbHkoMWU3LCAwKTtcbiAgICAgICAgICBqIC09IDc7XG4gICAgICAgIH1cbiAgICAgICAgbXVsdGlwbHkocG93KDEwLCBqLCAxKSwgMCk7XG4gICAgICAgIGogPSBlIC0gMTtcbiAgICAgICAgd2hpbGUgKGogPj0gMjMpIHtcbiAgICAgICAgICBkaXZpZGUoMSA8PCAyMyk7XG4gICAgICAgICAgaiAtPSAyMztcbiAgICAgICAgfVxuICAgICAgICBkaXZpZGUoMSA8PCBqKTtcbiAgICAgICAgbXVsdGlwbHkoMSwgMSk7XG4gICAgICAgIGRpdmlkZSgyKTtcbiAgICAgICAgbSA9IG51bVRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgbXVsdGlwbHkoMSA8PCAtZSwgMCk7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpICsgcmVwZWF0LmNhbGwoWkVSTywgZik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmID4gMCkge1xuICAgICAgayA9IG0ubGVuZ3RoO1xuICAgICAgbSA9IHMgKyAoayA8PSBmID8gJzAuJyArIHJlcGVhdC5jYWxsKFpFUk8sIGYgLSBrKSArIG0gOiBtLnNsaWNlKDAsIGsgLSBmKSArICcuJyArIG0uc2xpY2UoayAtIGYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHMgKyBtO1xuICAgIH0gcmV0dXJuIG07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJyk7XG52YXIgJHRvUHJlY2lzaW9uID0gMS4wLnRvUHJlY2lzaW9uO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICgkZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBJRTctXG4gIHJldHVybiAkdG9QcmVjaXNpb24uY2FsbCgxLCB1bmRlZmluZWQpICE9PSAnMSc7XG59KSB8fCAhJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvUHJlY2lzaW9uLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24ocHJlY2lzaW9uKSB7XG4gICAgdmFyIHRoYXQgPSBhTnVtYmVyVmFsdWUodGhpcywgJ051bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gICAgcmV0dXJuIHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gJHRvUHJlY2lzaW9uLmNhbGwodGhhdCkgOiAkdG9QcmVjaXNpb24uY2FsbCh0aGF0LCBwcmVjaXNpb24pO1xuICB9XG59KTtcbiIsIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgY3JlYXRlOiByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjMgLyAxNS4yLjMuNyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIi8vIDE5LjEuMi41IE9iamVjdC5mcmVlemUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZnJlZXplJywgZnVuY3Rpb24gKCRmcmVlemUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkge1xuICAgIHJldHVybiAkZnJlZXplICYmIGlzT2JqZWN0KGl0KSA/ICRmcmVlemUobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5TmFtZXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKS5mO1xufSk7XG4iLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTEgT2JqZWN0LmlzRXh0ZW5zaWJsZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNFeHRlbnNpYmxlJywgZnVuY3Rpb24gKCRpc0V4dGVuc2libGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xMiBPYmplY3QuaXNGcm96ZW4oTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRnJvemVuJywgZnVuY3Rpb24gKCRpc0Zyb3plbikge1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjEzIE9iamVjdC5pc1NlYWxlZChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNTZWFsZWQnLCBmdW5jdGlvbiAoJGlzU2VhbGVkKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc1NlYWxlZChpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNTZWFsZWQgPyAkaXNTZWFsZWQoaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMTAgT2JqZWN0LmlzKHZhbHVlMSwgdmFsdWUyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBpczogcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpIH0pO1xuIiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgna2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjE1IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdwcmV2ZW50RXh0ZW5zaW9ucycsIGZ1bmN0aW9uICgkcHJldmVudEV4dGVuc2lvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKGl0KSB7XG4gICAgcmV0dXJuICRwcmV2ZW50RXh0ZW5zaW9ucyAmJiBpc09iamVjdChpdCkgPyAkcHJldmVudEV4dGVuc2lvbnMobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xNyBPYmplY3Quc2VhbChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdzZWFsJywgZnVuY3Rpb24gKCRzZWFsKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzZWFsKGl0KSB7XG4gICAgcmV0dXJuICRzZWFsICYmIGlzT2JqZWN0KGl0KSA/ICRzZWFsKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0IH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciB0ZXN0ID0ge307XG50ZXN0W3JlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpXSA9ICd6JztcbmlmICh0ZXN0ICsgJycgIT0gJ1tvYmplY3Qgel0nKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xuICB9LCB0cnVlKTtcbn1cbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMTguMi40IHBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCksIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX3BhcnNlLWludCcpO1xuLy8gMTguMi41IHBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuRiAqIChwYXJzZUludCAhPSAkcGFyc2VJbnQpLCB7IHBhcnNlSW50OiAkcGFyc2VJbnQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEgUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgckFwcGx5ID0gKHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3QgfHwge30pLmFwcGx5O1xudmFyIGZBcHBseSA9IEZ1bmN0aW9uLmFwcGx5O1xuLy8gTVMgRWRnZSBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgckFwcGx5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KSwgJ1JlZmxlY3QnLCB7XG4gIGFwcGx5OiBmdW5jdGlvbiBhcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdCkge1xuICAgIHZhciBUID0gYUZ1bmN0aW9uKHRhcmdldCk7XG4gICAgdmFyIEwgPSBhbk9iamVjdChhcmd1bWVudHNMaXN0KTtcbiAgICByZXR1cm4gckFwcGx5ID8gckFwcGx5KFQsIHRoaXNBcmd1bWVudCwgTCkgOiBmQXBwbHkuY2FsbChULCB0aGlzQXJndW1lbnQsIEwpO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMiBSZWZsZWN0LmNvbnN0cnVjdCh0YXJnZXQsIGFyZ3VtZW50c0xpc3QgWywgbmV3VGFyZ2V0XSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL19iaW5kJyk7XG52YXIgckNvbnN0cnVjdCA9IChyZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0IHx8IHt9KS5jb25zdHJ1Y3Q7XG5cbi8vIE1TIEVkZ2Ugc3VwcG9ydHMgb25seSAyIGFyZ3VtZW50cyBhbmQgYXJndW1lbnRzTGlzdCBhcmd1bWVudCBpcyBvcHRpb25hbFxuLy8gRkYgTmlnaHRseSBzZXRzIHRoaXJkIGFyZ3VtZW50IGFzIGBuZXcudGFyZ2V0YCwgYnV0IGRvZXMgbm90IGNyZWF0ZSBgdGhpc2AgZnJvbSBpdFxudmFyIE5FV19UQVJHRVRfQlVHID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBbXSwgRikgaW5zdGFuY2VvZiBGKTtcbn0pO1xudmFyIEFSR1NfQlVHID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgckNvbnN0cnVjdChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE5FV19UQVJHRVRfQlVHIHx8IEFSR1NfQlVHKSwgJ1JlZmxlY3QnLCB7XG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gY29uc3RydWN0KFRhcmdldCwgYXJncyAvKiAsIG5ld1RhcmdldCAqLykge1xuICAgIGFGdW5jdGlvbihUYXJnZXQpO1xuICAgIGFuT2JqZWN0KGFyZ3MpO1xuICAgIHZhciBuZXdUYXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IFRhcmdldCA6IGFGdW5jdGlvbihhcmd1bWVudHNbMl0pO1xuICAgIGlmIChBUkdTX0JVRyAmJiAhTkVXX1RBUkdFVF9CVUcpIHJldHVybiByQ29uc3RydWN0KFRhcmdldCwgYXJncywgbmV3VGFyZ2V0KTtcbiAgICBpZiAoVGFyZ2V0ID09IG5ld1RhcmdldCkge1xuICAgICAgLy8gdy9vIGFsdGVyZWQgbmV3VGFyZ2V0LCBvcHRpbWl6YXRpb24gZm9yIDAtNCBhcmd1bWVudHNcbiAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IFRhcmdldCgpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0pO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgfVxuICAgICAgLy8gdy9vIGFsdGVyZWQgbmV3VGFyZ2V0LCBsb3Qgb2YgYXJndW1lbnRzIGNhc2VcbiAgICAgIHZhciAkYXJncyA9IFtudWxsXTtcbiAgICAgICRhcmdzLnB1c2guYXBwbHkoJGFyZ3MsIGFyZ3MpO1xuICAgICAgcmV0dXJuIG5ldyAoYmluZC5hcHBseShUYXJnZXQsICRhcmdzKSkoKTtcbiAgICB9XG4gICAgLy8gd2l0aCBhbHRlcmVkIG5ld1RhcmdldCwgbm90IHN1cHBvcnQgYnVpbHQtaW4gY29uc3RydWN0b3JzXG4gICAgdmFyIHByb3RvID0gbmV3VGFyZ2V0LnByb3RvdHlwZTtcbiAgICB2YXIgaW5zdGFuY2UgPSBjcmVhdGUoaXNPYmplY3QocHJvdG8pID8gcHJvdG8gOiBPYmplY3QucHJvdG90eXBlKTtcbiAgICB2YXIgcmVzdWx0ID0gRnVuY3Rpb24uYXBwbHkuY2FsbChUYXJnZXQsIGluc3RhbmNlLCBhcmdzKTtcbiAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IGluc3RhbmNlO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMyBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpXG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xuXG4vLyBNUyBFZGdlIGhhcyBicm9rZW4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSAtIHRocm93aW5nIGluc3RlYWQgb2YgcmV0dXJuaW5nIGZhbHNlXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShkUC5mKHt9LCAxLCB7IHZhbHVlOiAxIH0pLCAxLCB7IHZhbHVlOiAyIH0pO1xufSksICdSZWZsZWN0Jywge1xuICBkZWZpbmVQcm9wZXJ0eTogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcykge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShwcm9wZXJ0eUtleSwgdHJ1ZSk7XG4gICAgYW5PYmplY3QoYXR0cmlidXRlcyk7XG4gICAgdHJ5IHtcbiAgICAgIGRQLmYodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIi8vIDI2LjEuNCBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBkZWxldGVQcm9wZXJ0eTogZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHZhciBkZXNjID0gZ09QRChhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gICAgcmV0dXJuIGRlc2MgJiYgIWRlc2MuY29uZmlndXJhYmxlID8gZmFsc2UgOiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyNi4xLjUgUmVmbGVjdC5lbnVtZXJhdGUodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIEVudW1lcmF0ZSA9IGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gYW5PYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB2YXIga2V5cyA9IHRoaXMuX2sgPSBbXTsgICAgICAvLyBrZXlzXG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIGl0ZXJhdGVkKSBrZXlzLnB1c2goa2V5KTtcbn07XG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKEVudW1lcmF0ZSwgJ09iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIga2V5cyA9IHRoYXQuX2s7XG4gIHZhciBrZXk7XG4gIGRvIHtcbiAgICBpZiAodGhhdC5faSA+PSBrZXlzLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9IHdoaWxlICghKChrZXkgPSBrZXlzW3RoYXQuX2krK10pIGluIHRoYXQuX3QpKTtcbiAgcmV0dXJuIHsgdmFsdWU6IGtleSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGVudW1lcmF0ZTogZnVuY3Rpb24gZW51bWVyYXRlKHRhcmdldCkge1xuICAgIHJldHVybiBuZXcgRW51bWVyYXRlKHRhcmdldCk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS43IFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpXG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBnT1BELmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuOCBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZ2V0UHJvdG8gPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdldFByb3RvKGFuT2JqZWN0KHRhcmdldCkpO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuNiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5S2V5IFssIHJlY2VpdmVyXSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBnZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdGFyZ2V0IDogYXJndW1lbnRzWzJdO1xuICB2YXIgZGVzYywgcHJvdG87XG4gIGlmIChhbk9iamVjdCh0YXJnZXQpID09PSByZWNlaXZlcikgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIGlmIChkZXNjID0gZ09QRC5mKHRhcmdldCwgcHJvcGVydHlLZXkpKSByZXR1cm4gaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgPyBkZXNjLnZhbHVlXG4gICAgOiBkZXNjLmdldCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGRlc2MuZ2V0LmNhbGwocmVjZWl2ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgaWYgKGlzT2JqZWN0KHByb3RvID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHJldHVybiBnZXQocHJvdG8sIHByb3BlcnR5S2V5LCByZWNlaXZlcik7XG59XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHsgZ2V0OiBnZXQgfSk7XG4iLCIvLyAyNi4xLjkgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaGFzOiBmdW5jdGlvbiBoYXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleSBpbiB0YXJnZXQ7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMCBSZWZsZWN0LmlzRXh0ZW5zaWJsZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaXNFeHRlbnNpYmxlOiBmdW5jdGlvbiBpc0V4dGVuc2libGUodGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICByZXR1cm4gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUodGFyZ2V0KSA6IHRydWU7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMSBSZWZsZWN0Lm93bktleXModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBvd25LZXlzOiByZXF1aXJlKCcuL19vd24ta2V5cycpIH0pO1xuIiwiLy8gMjYuMS4xMiBSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkcHJldmVudEV4dGVuc2lvbnMgPSBPYmplY3QucHJldmVudEV4dGVuc2lvbnM7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgcHJldmVudEV4dGVuc2lvbnM6IGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCkge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmICgkcHJldmVudEV4dGVuc2lvbnMpICRwcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIvLyAyNi4xLjE0IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2V0UHJvdG8gPSByZXF1aXJlKCcuL19zZXQtcHJvdG8nKTtcblxuaWYgKHNldFByb3RvKSAkZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIHNldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKSB7XG4gICAgc2V0UHJvdG8uY2hlY2sodGFyZ2V0LCBwcm90byk7XG4gICAgdHJ5IHtcbiAgICAgIHNldFByb3RvLnNldCh0YXJnZXQsIHByb3RvKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMyBSZWZsZWN0LnNldCh0YXJnZXQsIHByb3BlcnR5S2V5LCBWIFssIHJlY2VpdmVyXSlcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcblxuZnVuY3Rpb24gc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgLyogLCByZWNlaXZlciAqLykge1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgNCA/IHRhcmdldCA6IGFyZ3VtZW50c1szXTtcbiAgdmFyIG93bkRlc2MgPSBnT1BELmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICB2YXIgZXhpc3RpbmdEZXNjcmlwdG9yLCBwcm90bztcbiAgaWYgKCFvd25EZXNjKSB7XG4gICAgaWYgKGlzT2JqZWN0KHByb3RvID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHtcbiAgICAgIHJldHVybiBzZXQocHJvdG8sIHByb3BlcnR5S2V5LCBWLCByZWNlaXZlcik7XG4gICAgfVxuICAgIG93bkRlc2MgPSBjcmVhdGVEZXNjKDApO1xuICB9XG4gIGlmIChoYXMob3duRGVzYywgJ3ZhbHVlJykpIHtcbiAgICBpZiAob3duRGVzYy53cml0YWJsZSA9PT0gZmFsc2UgfHwgIWlzT2JqZWN0KHJlY2VpdmVyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChleGlzdGluZ0Rlc2NyaXB0b3IgPSBnT1BELmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5KSkge1xuICAgICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvci5nZXQgfHwgZXhpc3RpbmdEZXNjcmlwdG9yLnNldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iud3JpdGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgICBleGlzdGluZ0Rlc2NyaXB0b3IudmFsdWUgPSBWO1xuICAgICAgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGV4aXN0aW5nRGVzY3JpcHRvcik7XG4gICAgfSBlbHNlIGRQLmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5LCBjcmVhdGVEZXNjKDAsIFYpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gb3duRGVzYy5zZXQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogKG93bkRlc2Muc2V0LmNhbGwocmVjZWl2ZXIsIFYpLCB0cnVlKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBzZXQ6IHNldCB9KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyICRmbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG52YXIgQmFzZSA9ICRSZWdFeHA7XG52YXIgcHJvdG8gPSAkUmVnRXhwLnByb3RvdHlwZTtcbnZhciByZTEgPSAvYS9nO1xudmFyIHJlMiA9IC9hL2c7XG4vLyBcIm5ld1wiIGNyZWF0ZXMgYSBuZXcgb2JqZWN0LCBvbGQgd2Via2l0IGJ1Z2d5IGhlcmVcbnZhciBDT1JSRUNUX05FVyA9IG5ldyAkUmVnRXhwKHJlMSkgIT09IHJlMTtcblxuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgKCFDT1JSRUNUX05FVyB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmUyW3JlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpXSA9IGZhbHNlO1xuICAvLyBSZWdFeHAgY29uc3RydWN0b3IgY2FuIGFsdGVyIGZsYWdzIGFuZCBJc1JlZ0V4cCB3b3JrcyBjb3JyZWN0IHdpdGggQEBtYXRjaFxuICByZXR1cm4gJFJlZ0V4cChyZTEpICE9IHJlMSB8fCAkUmVnRXhwKHJlMikgPT0gcmUyIHx8ICRSZWdFeHAocmUxLCAnaScpICE9ICcvYS9pJztcbn0pKSkge1xuICAkUmVnRXhwID0gZnVuY3Rpb24gUmVnRXhwKHAsIGYpIHtcbiAgICB2YXIgdGlSRSA9IHRoaXMgaW5zdGFuY2VvZiAkUmVnRXhwO1xuICAgIHZhciBwaVJFID0gaXNSZWdFeHAocCk7XG4gICAgdmFyIGZpVSA9IGYgPT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gIXRpUkUgJiYgcGlSRSAmJiBwLmNvbnN0cnVjdG9yID09PSAkUmVnRXhwICYmIGZpVSA/IHBcbiAgICAgIDogaW5oZXJpdElmUmVxdWlyZWQoQ09SUkVDVF9ORVdcbiAgICAgICAgPyBuZXcgQmFzZShwaVJFICYmICFmaVUgPyBwLnNvdXJjZSA6IHAsIGYpXG4gICAgICAgIDogQmFzZSgocGlSRSA9IHAgaW5zdGFuY2VvZiAkUmVnRXhwKSA/IHAuc291cmNlIDogcCwgcGlSRSAmJiBmaVUgPyAkZmxhZ3MuY2FsbChwKSA6IGYpXG4gICAgICAsIHRpUkUgPyB0aGlzIDogcHJvdG8sICRSZWdFeHApO1xuICB9O1xuICB2YXIgcHJveHkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5IGluICRSZWdFeHAgfHwgZFAoJFJlZ0V4cCwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJhc2Vba2V5XTsgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKGl0KSB7IEJhc2Vba2V5XSA9IGl0OyB9XG4gICAgfSk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSBnT1BOKEJhc2UpLCBpID0gMDsga2V5cy5sZW5ndGggPiBpOykgcHJveHkoa2V5c1tpKytdKTtcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkUmVnRXhwO1xuICAkUmVnRXhwLnByb3RvdHlwZSA9IHByb3RvO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgJ1JlZ0V4cCcsICRSZWdFeHApO1xufVxuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdSZWdFeHAnKTtcbiIsIi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzKClcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIC8uL2cuZmxhZ3MgIT0gJ2cnKSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IHJlcXVpcmUoJy4vX2ZsYWdzJylcbn0pO1xuIiwiLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBNQVRDSCwgJG1hdGNoKSB7XG4gIC8vIDIxLjEuMy4xMSBTdHJpbmcucHJvdG90eXBlLm1hdGNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgIHZhciBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXShTdHJpbmcoTykpO1xuICB9LCAkbWF0Y2hdO1xufSk7XG4iLCIvLyBAQHJlcGxhY2UgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBSRVBMQUNFLCAkcmVwbGFjZSkge1xuICAvLyAyMS4xLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpXG4gIHJldHVybiBbZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZFxuICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICA6ICRyZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgfSwgJHJlcGxhY2VdO1xufSk7XG4iLCIvLyBAQHNlYXJjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzZWFyY2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgU0VBUkNILCAkc2VhcmNoKSB7XG4gIC8vIDIxLjEuMy4xNSBTdHJpbmcucHJvdG90eXBlLnNlYXJjaChyZWdleHApXG4gIHJldHVybiBbZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtTRUFSQ0hdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW1NFQVJDSF0oU3RyaW5nKE8pKTtcbiAgfSwgJHNlYXJjaF07XG59KTtcbiIsIi8vIEBAc3BsaXQgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnc3BsaXQnLCAyLCBmdW5jdGlvbiAoZGVmaW5lZCwgU1BMSVQsICRzcGxpdCkge1xuICAndXNlIHN0cmljdCc7XG4gIHZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xuICB2YXIgX3NwbGl0ID0gJHNwbGl0O1xuICB2YXIgJHB1c2ggPSBbXS5wdXNoO1xuICB2YXIgJFNQTElUID0gJ3NwbGl0JztcbiAgdmFyIExFTkdUSCA9ICdsZW5ndGgnO1xuICB2YXIgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xuICBpZiAoXG4gICAgJ2FiYmMnWyRTUExJVF0oLyhiKSovKVsxXSA9PSAnYycgfHxcbiAgICAndGVzdCdbJFNQTElUXSgvKD86KS8sIC0xKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnYWInWyRTUExJVF0oLyg/OmFiKSovKVtMRU5HVEhdICE9IDIgfHxcbiAgICAnLidbJFNQTElUXSgvKC4/KSguPykvKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnLidbJFNQTElUXSgvKCkoKS8pW0xFTkdUSF0gPiAxIHx8XG4gICAgJydbJFNQTElUXSgvLj8vKVtMRU5HVEhdXG4gICkge1xuICAgIHZhciBOUENHID0gLygpPz8vLmV4ZWMoJycpWzFdID09PSB1bmRlZmluZWQ7IC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwXG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgJHNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBzdHJpbmcgPSBTdHJpbmcodGhpcyk7XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQgJiYgbGltaXQgPT09IDApIHJldHVybiBbXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHJldHVybiBfc3BsaXQuY2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgICAgdmFyIG91dHB1dCA9IFtdO1xuICAgICAgdmFyIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IubXVsdGlsaW5lID8gJ20nIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnN0aWNreSA/ICd5JyA6ICcnKTtcbiAgICAgIHZhciBsYXN0TGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBzcGxpdExpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IDQyOTQ5NjcyOTUgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICB2YXIgc2VwYXJhdG9yQ29weSA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSwgZmxhZ3MgKyAnZycpO1xuICAgICAgdmFyIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGgsIGk7XG4gICAgICAvLyBEb2Vzbid0IG5lZWQgZmxhZ3MgZ3ksIGJ1dCB0aGV5IGRvbid0IGh1cnRcbiAgICAgIGlmICghTlBDRykgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoJ14nICsgc2VwYXJhdG9yQ29weS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIGZsYWdzKTtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvckNvcHkuZXhlYyhzdHJpbmcpKSB7XG4gICAgICAgIC8vIGBzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleGAgaXMgbm90IHJlbGlhYmxlIGNyb3NzLWJyb3dzZXJcbiAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXVtMRU5HVEhdO1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgIGZvciBOUENHXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuICAgICAgICAgIGlmICghTlBDRyAmJiBtYXRjaFtMRU5HVEhdID4gMSkgbWF0Y2hbMF0ucmVwbGFjZShzZXBhcmF0b3IyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzW0xFTkdUSF0gLSAyOyBpKyspIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCkgbWF0Y2hbaV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKG1hdGNoW0xFTkdUSF0gPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nW0xFTkdUSF0pICRwdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXVtMRU5HVEhdO1xuICAgICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgICAgaWYgKG91dHB1dFtMRU5HVEhdID49IHNwbGl0TGltaXQpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdID09PSBtYXRjaC5pbmRleCkgc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXSsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyaW5nW0xFTkdUSF0pIHtcbiAgICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvckNvcHkudGVzdCgnJykpIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0gZWxzZSBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgICAgcmV0dXJuIG91dHB1dFtMRU5HVEhdID4gc3BsaXRMaW1pdCA/IG91dHB1dC5zbGljZSgwLCBzcGxpdExpbWl0KSA6IG91dHB1dDtcbiAgICB9O1xuICAvLyBDaGFrcmEsIFY4XG4gIH0gZWxzZSBpZiAoJzAnWyRTUExJVF0odW5kZWZpbmVkLCAwKVtMRU5HVEhdKSB7XG4gICAgJHNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHJldHVybiBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCA/IFtdIDogX3NwbGl0LmNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfTtcbiAgfVxuICAvLyAyMS4xLjMuMTcgU3RyaW5nLnByb3RvdHlwZS5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KVxuICByZXR1cm4gW2Z1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgdmFyIGZuID0gc2VwYXJhdG9yID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlcGFyYXRvcltTUExJVF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHNlcGFyYXRvciwgTywgbGltaXQpIDogJHNwbGl0LmNhbGwoU3RyaW5nKE8pLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgfSwgJHNwbGl0XTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi9lczYucmVnZXhwLmZsYWdzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkZmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IC8uL1tUT19TVFJJTkddO1xuXG52YXIgZGVmaW5lID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoUmVnRXhwLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmbiwgdHJ1ZSk7XG59O1xuXG4vLyAyMS4yLjUuMTQgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpXG5pZiAocmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7IHJldHVybiAkdG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSkpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgcmV0dXJuICcvJy5jb25jYXQoUi5zb3VyY2UsICcvJyxcbiAgICAgICdmbGFncycgaW4gUiA/IFIuZmxhZ3MgOiAhREVTQ1JJUFRPUlMgJiYgUiBpbnN0YW5jZW9mIFJlZ0V4cCA/ICRmbGFncy5jYWxsKFIpIDogdW5kZWZpbmVkKTtcbiAgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxufSBlbHNlIGlmICgkdG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkcpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3Ryb25nID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi1zdHJvbmcnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTRVQgPSAnU2V0JztcblxuLy8gMjMuMiBTZXQgT2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBTZXQoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih2YWxpZGF0ZSh0aGlzLCBTRVQpLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4yIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdhbmNob3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYW5jaG9yKG5hbWUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICduYW1lJywgbmFtZSk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjMgU3RyaW5nLnByb3RvdHlwZS5iaWcoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmlnJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNCBTdHJpbmcucHJvdG90eXBlLmJsaW5rKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdibGluaycsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjUgU3RyaW5nLnByb3RvdHlwZS5ib2xkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JvbGQnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYm9sZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYicsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykoZmFsc2UpO1xuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMy4zIFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQocG9zKVxuICBjb2RlUG9pbnRBdDogZnVuY3Rpb24gY29kZVBvaW50QXQocG9zKSB7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIi8vIDIxLjEuMy42IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgoc2VhcmNoU3RyaW5nIFssIGVuZFBvc2l0aW9uXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBFTkRTX1dJVEggPSAnZW5kc1dpdGgnO1xudmFyICRlbmRzV2l0aCA9ICcnW0VORFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoRU5EU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoYXQubGVuZ3RoKTtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjggU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZm9udHNpemUnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udHNpemUoc2l6ZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ3NpemUnLCBzaXplKTtcbiAgfTtcbn0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgJGZyb21Db2RlUG9pbnQgPSBTdHJpbmcuZnJvbUNvZGVQb2ludDtcblxuLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoISEkZnJvbUNvZGVQb2ludCAmJiAkZnJvbUNvZGVQb2ludC5sZW5ndGggIT0gMSksICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMi4yIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLmNvZGVQb2ludHMpXG4gIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGNvZGU7XG4gICAgd2hpbGUgKGFMZW4gPiBpKSB7XG4gICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdO1xuICAgICAgaWYgKHRvQWJzb2x1dGVJbmRleChjb2RlLCAweDEwZmZmZikgIT09IGNvZGUpIHRocm93IFJhbmdlRXJyb3IoY29kZSArICcgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCcpO1xuICAgICAgcmVzLnB1c2goY29kZSA8IDB4MTAwMDBcbiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgICAgOiBmcm9tQ2hhckNvZGUoKChjb2RlIC09IDB4MTAwMDApID4+IDEwKSArIDB4ZDgwMCwgY29kZSAlIDB4NDAwICsgMHhkYzAwKVxuICAgICAgKTtcbiAgICB9IHJldHVybiByZXMuam9pbignJyk7XG4gIH1cbn0pO1xuIiwiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5jb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgSU5DTFVERVMpXG4gICAgICAuaW5kZXhPZihzZWFyY2hTdHJpbmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy45IFN0cmluZy5wcm90b3R5cGUuaXRhbGljcygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdpdGFsaWNzJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGl0YWxpY3MoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2knLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEwIFN0cmluZy5wcm90b3R5cGUubGluayh1cmwpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGxpbmsodXJsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnaHJlZicsIHVybCk7XG4gIH07XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSkge1xuICAgIHZhciB0cGwgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodHBsLmxlbmd0aCk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGxlbiA+IGkpIHtcbiAgICAgIHJlcy5wdXNoKFN0cmluZyh0cGxbaSsrXSkpO1xuICAgICAgaWYgKGkgPCBhTGVuKSByZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQoY291bnQpXG4gIHJlcGVhdDogcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjExIFN0cmluZy5wcm90b3R5cGUuc21hbGwoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc21hbGwnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc21hbGwoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3NtYWxsJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTIgU3RyaW5nLnByb3RvdHlwZS5zdHJpa2UoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3RyaWtlJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN0cmlrZSgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3RyaWtlJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5zdWIoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3ViJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3ViJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5zdXAoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3VwJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1cCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3VwJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMS4zLjI1IFN0cmluZy5wcm90b3R5cGUudHJpbSgpXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltJywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAzKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBfY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdPUE5FeHQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKTtcbnZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9jcmVhdGUoZFAoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKGl0LCBrZXksIEQpIHtcbiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmIChwcm90b0Rlc2MpIGRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuICBkUChpdCwga2V5LCBEKTtcbiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykge1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzeW0uX2sgPSB0YWc7XG4gIHJldHVybiBzeW07XG59O1xuXG52YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkge1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvKSAkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUQuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXMoaXQsIEhJRERFTikpIGRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSBpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHsgZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcbiAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkge1xuICBhbk9iamVjdChpdCk7XG4gIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7XG4gIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcbn07XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICBpdCA9IHRvSU9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpO1xuICBpZiAoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSBELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHZhciBuYW1lcyA9IGdPUE4odG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmICghaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICB2YXIgSVNfT1AgPSBpdCA9PT0gT2JqZWN0UHJvdG87XG4gIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSkgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBzZXR0ZXIpIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywgeyBjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldCB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcpO1xuICB9O1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9rO1xuICB9KTtcblxuICAkR09QRC5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKS5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSkge1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG5cbiAgd2tzRXh0LmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgU3ltYm9sOiAkU3ltYm9sIH0pO1xuXG5mb3IgKHZhciBlczZTeW1ib2xzID0gKFxuICAvLyAxOS40LjIuMiwgMTkuNC4yLjMsIDE5LjQuMi40LCAxOS40LjIuNiwgMTkuNC4yLjgsIDE5LjQuMi45LCAxOS40LjIuMTAsIDE5LjQuMi4xMSwgMTkuNC4yLjEyLCAxOS40LjIuMTMsIDE5LjQuMi4xNFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG4pLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pO1xuXG5mb3IgKHZhciB3ZWxsS25vd25TeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgayA9IDA7IHdlbGxLbm93blN5bWJvbHMubGVuZ3RoID4gazspIHdrc0RlZmluZSh3ZWxsS25vd25TeW1ib2xzW2srK10pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnU3ltYm9sJywge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICAgIGZvciAodmFyIGtleSBpbiBTeW1ib2xSZWdpc3RyeSkgaWYgKFN5bWJvbFJlZ2lzdHJ5W2tleV0gPT09IHN5bSkgcmV0dXJuIGtleTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSBmYWxzZTsgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdPYmplY3QnLCB7XG4gIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyAyNC4zLjIgSlNPTi5zdHJpbmdpZnkodmFsdWUgWywgcmVwbGFjZXIgWywgc3BhY2VdXSlcbiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHsgYTogUyB9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpIHtcbiAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07XG4gICAgaWYgKCFpc09iamVjdChyZXBsYWNlcikgJiYgaXQgPT09IHVuZGVmaW5lZCB8fCBpc1N5bWJvbChpdCkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoIWlzU3ltYm9sKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbiAgfVxufSk7XG5cbi8vIDE5LjQuMy40IFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV0oaGludClcbiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IHJlcXVpcmUoJy4vX2hpZGUnKSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuLy8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbi8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHR5cGVkID0gcmVxdWlyZSgnLi9fdHlwZWQnKTtcbnZhciBidWZmZXIgPSByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIEFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuQXJyYXlCdWZmZXI7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyICRBcnJheUJ1ZmZlciA9IGJ1ZmZlci5BcnJheUJ1ZmZlcjtcbnZhciAkRGF0YVZpZXcgPSBidWZmZXIuRGF0YVZpZXc7XG52YXIgJGlzVmlldyA9ICR0eXBlZC5BQlYgJiYgQXJyYXlCdWZmZXIuaXNWaWV3O1xudmFyICRzbGljZSA9ICRBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2U7XG52YXIgVklFVyA9ICR0eXBlZC5WSUVXO1xudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKEFycmF5QnVmZmVyICE9PSAkQXJyYXlCdWZmZXIpLCB7IEFycmF5QnVmZmVyOiAkQXJyYXlCdWZmZXIgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISR0eXBlZC5DT05TVFIsIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjMuMSBBcnJheUJ1ZmZlci5pc1ZpZXcoYXJnKVxuICBpc1ZpZXc6IGZ1bmN0aW9uIGlzVmlldyhpdCkge1xuICAgIHJldHVybiAkaXNWaWV3ICYmICRpc1ZpZXcoaXQpIHx8IGlzT2JqZWN0KGl0KSAmJiBWSUVXIGluIGl0O1xuICB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlUgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFuZXcgJEFycmF5QnVmZmVyKDIpLnNsaWNlKDEsIHVuZGVmaW5lZCkuYnl0ZUxlbmd0aDtcbn0pLCBBUlJBWV9CVUZGRVIsIHtcbiAgLy8gMjQuMS40LjMgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgaWYgKCRzbGljZSAhPT0gdW5kZWZpbmVkICYmIGVuZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJHNsaWNlLmNhbGwoYW5PYmplY3QodGhpcyksIHN0YXJ0KTsgLy8gRkYgZml4XG4gICAgdmFyIGxlbiA9IGFuT2JqZWN0KHRoaXMpLmJ5dGVMZW5ndGg7XG4gICAgdmFyIGZpcnN0ID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICAgIHZhciBmaW5hbCA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IGVuZCwgbGVuKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJEFycmF5QnVmZmVyKSkodG9MZW5ndGgoZmluYWwgLSBmaXJzdCkpO1xuICAgIHZhciB2aWV3UyA9IG5ldyAkRGF0YVZpZXcodGhpcyk7XG4gICAgdmFyIHZpZXdUID0gbmV3ICREYXRhVmlldyhyZXN1bHQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGZpcnN0IDwgZmluYWwpIHtcbiAgICAgIHZpZXdULnNldFVpbnQ4KGluZGV4KyssIHZpZXdTLmdldFVpbnQ4KGZpcnN0KyspKTtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKEFSUkFZX0JVRkZFUik7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fdHlwZWQnKS5BQlYsIHtcbiAgRGF0YVZpZXc6IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpLkRhdGFWaWV3XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0Zsb2F0NjQnLCA4LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDE2JywgMiwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDE2QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDhBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50MTYnLCAyLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDE2QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDhDbGFtcGVkQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0sIHRydWUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpO1xudmFyIHdlYWsgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXdlYWsnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBXRUFLX01BUCA9ICdXZWFrTWFwJztcbnZhciBnZXRXZWFrID0gbWV0YS5nZXRXZWFrO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IHdlYWsudWZzdG9yZTtcbnZhciB0bXAgPSB7fTtcbnZhciBJbnRlcm5hbE1hcDtcblxudmFyIHdyYXBwZXIgPSBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgIHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICB9O1xufTtcblxudmFyIG1ldGhvZHMgPSB7XG4gIC8vIDIzLjMuMy4zIFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpXG4gIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgIGlmIChpc09iamVjdChrZXkpKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZSh2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCkpLmdldChrZXkpO1xuICAgICAgcmV0dXJuIGRhdGEgPyBkYXRhW3RoaXMuX2ldIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfSxcbiAgLy8gMjMuMy4zLjUgV2Vha01hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpXG4gIHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gd2Vhay5kZWYodmFsaWRhdGUodGhpcywgV0VBS19NQVApLCBrZXksIHZhbHVlKTtcbiAgfVxufTtcblxuLy8gMjMuMyBXZWFrTWFwIE9iamVjdHNcbnZhciAkV2Vha01hcCA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFdFQUtfTUFQLCB3cmFwcGVyLCBtZXRob2RzLCB3ZWFrLCB0cnVlLCB0cnVlKTtcblxuLy8gSUUxMSBXZWFrTWFwIGZyb3plbiBrZXlzIGZpeFxuaWYgKGZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyAkV2Vha01hcCgpLnNldCgoT2JqZWN0LmZyZWV6ZSB8fCBPYmplY3QpKHRtcCksIDcpLmdldCh0bXApICE9IDc7IH0pKSB7XG4gIEludGVybmFsTWFwID0gd2Vhay5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBXRUFLX01BUCk7XG4gIGFzc2lnbihJbnRlcm5hbE1hcC5wcm90b3R5cGUsIG1ldGhvZHMpO1xuICBtZXRhLk5FRUQgPSB0cnVlO1xuICBlYWNoKFsnZGVsZXRlJywgJ2hhcycsICdnZXQnLCAnc2V0J10sIGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcHJvdG8gPSAkV2Vha01hcC5wcm90b3R5cGU7XG4gICAgdmFyIG1ldGhvZCA9IHByb3RvW2tleV07XG4gICAgcmVkZWZpbmUocHJvdG8sIGtleSwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIC8vIHN0b3JlIGZyb3plbiBvYmplY3RzIG9uIGludGVybmFsIHdlYWttYXAgc2hpbVxuICAgICAgaWYgKGlzT2JqZWN0KGEpICYmICFpc0V4dGVuc2libGUoYSkpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mKSB0aGlzLl9mID0gbmV3IEludGVybmFsTWFwKCk7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9mW2tleV0oYSwgYik7XG4gICAgICAgIHJldHVybiBrZXkgPT0gJ3NldCcgPyB0aGlzIDogcmVzdWx0O1xuICAgICAgLy8gc3RvcmUgYWxsIHRoZSByZXN0IG9uIG5hdGl2ZSB3ZWFrbWFwXG4gICAgICB9IHJldHVybiBtZXRob2QuY2FsbCh0aGlzLCBhLCBiKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfU0VUID0gJ1dlYWtTZXQnO1xuXG4vLyAyMy40IFdlYWtTZXQgT2JqZWN0c1xucmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFdFQUtfU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuNC4zLjEgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX1NFVCksIHZhbHVlLCB0cnVlKTtcbiAgfVxufSwgd2VhaywgZmFsc2UsIHRydWUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtQXJyYXkucHJvdG90eXBlLmZsYXRNYXBcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4vX2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiwgQTtcbiAgICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gICAgc291cmNlTGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIDEsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmxhdE1hcCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtQXJyYXkucHJvdG90eXBlLmZsYXR0ZW5cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4vX2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgZmxhdHRlbjogZnVuY3Rpb24gZmxhdHRlbigvKiBkZXB0aEFyZyA9IDEgKi8pIHtcbiAgICB2YXIgZGVwdGhBcmcgPSBhcmd1bWVudHNbMF07XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCBkZXB0aEFyZyA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aEFyZykpO1xuICAgIHJldHVybiBBO1xuICB9XG59KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2ZsYXR0ZW4nKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L0FycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoZWwgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuICRpbmNsdWRlcyh0aGlzLCBlbCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2luY2x1ZGVzJyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vcndhbGRyb24vdGMzOS1ub3Rlcy9ibG9iL21hc3Rlci9lczYvMjAxNC0wOS9zZXB0LTI1Lm1kIzUxMC1nbG9iYWxhc2FwLWZvci1lbnF1ZXVpbmctYS1taWNyb3Rhc2tcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBwcm9jZXNzID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucHJvY2VzcztcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbiRleHBvcnQoJGV4cG9ydC5HLCB7XG4gIGFzYXA6IGZ1bmN0aW9uIGFzYXAoZm4pIHtcbiAgICB2YXIgZG9tYWluID0gaXNOb2RlICYmIHByb2Nlc3MuZG9tYWluO1xuICAgIG1pY3JvdGFzayhkb21haW4gPyBkb21haW4uYmluZChmbikgOiBmbik7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9wcm9wb3NhbC1pcy1lcnJvclxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdFcnJvcicsIHtcbiAgaXNFcnJvcjogZnVuY3Rpb24gaXNFcnJvcihpdCkge1xuICAgIHJldHVybiBjb2YoaXQpID09PSAnRXJyb3InO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHsgZ2xvYmFsOiByZXF1aXJlKCcuL19nbG9iYWwnKSB9KTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLW1hcC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdNYXAnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnTWFwJywgeyB0b0pTT046IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tdG8tanNvbicpKCdNYXAnKSB9KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2xhbXA6IGZ1bmN0aW9uIGNsYW1wKHgsIGxvd2VyLCB1cHBlcikge1xuICAgIHJldHVybiBNYXRoLm1pbih1cHBlciwgTWF0aC5tYXgobG93ZXIsIHgpKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IERFR19QRVJfUkFEOiBNYXRoLlBJIC8gMTgwIH0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBSQURfUEVSX0RFRyA9IDE4MCAvIE1hdGguUEk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZGVncmVlczogZnVuY3Rpb24gZGVncmVlcyhyYWRpYW5zKSB7XG4gICAgcmV0dXJuIHJhZGlhbnMgKiBSQURfUEVSX0RFRztcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNjYWxlID0gcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4vX21hdGgtZnJvdW5kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgZnNjYWxlOiBmdW5jdGlvbiBmc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gICAgcmV0dXJuIGZyb3VuZChzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpYWRkaDogZnVuY3Rpb24gaWFkZGgoeDAsIHgxLCB5MCwgeTEpIHtcbiAgICB2YXIgJHgwID0geDAgPj4+IDA7XG4gICAgdmFyICR4MSA9IHgxID4+PiAwO1xuICAgIHZhciAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxICsgKHkxID4+PiAwKSArICgoJHgwICYgJHkwIHwgKCR4MCB8ICR5MCkgJiB+KCR4MCArICR5MCA+Pj4gMCkpID4+PiAzMSkgfCAwO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGltdWxoOiBmdW5jdGlvbiBpbXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpc3ViaDogZnVuY3Rpb24gaXN1YmgoeDAsIHgxLCB5MCwgeTEpIHtcbiAgICB2YXIgJHgwID0geDAgPj4+IDA7XG4gICAgdmFyICR4MSA9IHgxID4+PiAwO1xuICAgIHZhciAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxIC0gKHkxID4+PiAwKSAtICgofiR4MCAmICR5MCB8IH4oJHgwIF4gJHkwKSAmICR4MCAtICR5MCA+Pj4gMCkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBSQURfUEVSX0RFRzogMTgwIC8gTWF0aC5QSSB9KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgREVHX1BFUl9SQUQgPSBNYXRoLlBJIC8gMTgwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHJhZGlhbnM6IGZ1bmN0aW9uIHJhZGlhbnMoZGVncmVlcykge1xuICAgIHJldHVybiBkZWdyZWVzICogREVHX1BFUl9SQUQ7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzY2FsZTogcmVxdWlyZSgnLi9fbWF0aC1zY2FsZScpIH0pO1xuIiwiLy8gaHR0cDovL2pmYmFzdGllbi5naXRodWIuaW8vcGFwZXJzL01hdGguc2lnbmJpdC5odG1sXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ25iaXQ6IGZ1bmN0aW9uIHNpZ25iaXQoeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSAhPSB4ID8geCA6IHggPT0gMCA/IDEgLyB4ID09IEluZmluaXR5IDogeCA+IDA7XG59IH0pO1xuIiwiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgdW11bGg6IGZ1bmN0aW9uIHVtdWxoKHUsIHYpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhmZmZmO1xuICAgIHZhciAkdSA9ICt1O1xuICAgIHZhciAkdiA9ICt2O1xuICAgIHZhciB1MCA9ICR1ICYgVUlOVDE2O1xuICAgIHZhciB2MCA9ICR2ICYgVUlOVDE2O1xuICAgIHZhciB1MSA9ICR1ID4+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+Pj4gMTY7XG4gICAgdmFyIHQgPSAodTEgKiB2MCA+Pj4gMCkgKyAodTAgKiB2MCA+Pj4gMTYpO1xuICAgIHJldHVybiB1MSAqIHYxICsgKHQgPj4+IDE2KSArICgodTAgKiB2MSA+Pj4gMCkgKyAodCAmIFVJTlQxNikgPj4+IDE2KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4yIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVHZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBnZXQ6IGFGdW5jdGlvbihnZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcblxuLy8gQi4yLjIuMyBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18oUCwgc2V0dGVyKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fZGVmaW5lU2V0dGVyX186IGZ1bmN0aW9uIF9fZGVmaW5lU2V0dGVyX18oUCwgc2V0dGVyKSB7XG4gICAgJGRlZmluZVByb3BlcnR5LmYodG9PYmplY3QodGhpcyksIFAsIHsgc2V0OiBhRnVuY3Rpb24oc2V0dGVyKSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZW50cmllcyA9IHJlcXVpcmUoJy4vX29iamVjdC10by1hcnJheScpKHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcyhpdCkge1xuICAgIHJldHVybiAkZW50cmllcyhpdCk7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4vX293bi1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gICAgdmFyIGdldERlc2MgPSBnT1BELmY7XG4gICAgdmFyIGtleXMgPSBvd25LZXlzKE8pO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGtleSwgZGVzYztcbiAgICB3aGlsZSAoa2V5cy5sZW5ndGggPiBpKSB7XG4gICAgICBkZXNjID0gZ2V0RGVzYyhPLCBrZXkgPSBrZXlzW2krK10pO1xuICAgICAgaWYgKGRlc2MgIT09IHVuZGVmaW5lZCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXksIGRlc2MpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxuLy8gQi4yLjIuNCBPYmplY3QucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oUClcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2xvb2t1cEdldHRlcl9fOiBmdW5jdGlvbiBfX2xvb2t1cEdldHRlcl9fKFApIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBLID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gICAgdmFyIEQ7XG4gICAgZG8ge1xuICAgICAgaWYgKEQgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgSykpIHJldHVybiBELmdldDtcbiAgICB9IHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxuLy8gQi4yLjIuNSBPYmplY3QucHJvdG90eXBlLl9fbG9va3VwU2V0dGVyX18oUClcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2xvb2t1cFNldHRlcl9fOiBmdW5jdGlvbiBfX2xvb2t1cFNldHRlcl9fKFApIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBLID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gICAgdmFyIEQ7XG4gICAgZG8ge1xuICAgICAgaWYgKEQgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgSykpIHJldHVybiBELnNldDtcbiAgICB9IHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykoZmFsc2UpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoaXQpIHtcbiAgICByZXR1cm4gJHZhbHVlcyhpdCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3plbnBhcnNpbmcvZXMtb2JzZXJ2YWJsZVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKCk7XG52YXIgT0JTRVJWQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdvYnNlcnZhYmxlJyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgUkVUVVJOID0gZm9yT2YuUkVUVVJOO1xuXG52YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmbiA9PSBudWxsID8gdW5kZWZpbmVkIDogYUZ1bmN0aW9uKGZuKTtcbn07XG5cbnZhciBjbGVhbnVwU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICB2YXIgY2xlYW51cCA9IHN1YnNjcmlwdGlvbi5fYztcbiAgaWYgKGNsZWFudXApIHtcbiAgICBzdWJzY3JpcHRpb24uX2MgPSB1bmRlZmluZWQ7XG4gICAgY2xlYW51cCgpO1xuICB9XG59O1xuXG52YXIgc3Vic2NyaXB0aW9uQ2xvc2VkID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvbikge1xuICByZXR1cm4gc3Vic2NyaXB0aW9uLl9vID09PSB1bmRlZmluZWQ7XG59O1xuXG52YXIgY2xvc2VTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICB9XG59O1xuXG52YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKG9ic2VydmVyLCBzdWJzY3JpYmVyKSB7XG4gIGFuT2JqZWN0KG9ic2VydmVyKTtcbiAgdGhpcy5fYyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fbyA9IG9ic2VydmVyO1xuICBvYnNlcnZlciA9IG5ldyBTdWJzY3JpcHRpb25PYnNlcnZlcih0aGlzKTtcbiAgdHJ5IHtcbiAgICB2YXIgY2xlYW51cCA9IHN1YnNjcmliZXIob2JzZXJ2ZXIpO1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSBjbGVhbnVwO1xuICAgIGlmIChjbGVhbnVwICE9IG51bGwpIHtcbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cC51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykgY2xlYW51cCA9IGZ1bmN0aW9uICgpIHsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICBlbHNlIGFGdW5jdGlvbihjbGVhbnVwKTtcbiAgICAgIHRoaXMuX2MgPSBjbGVhbnVwO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgIHJldHVybjtcbiAgfSBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHRoaXMpKSBjbGVhbnVwU3Vic2NyaXB0aW9uKHRoaXMpO1xufTtcblxuU3Vic2NyaXB0aW9uLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIHVuc3Vic2NyaWJlOiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHsgY2xvc2VTdWJzY3JpcHRpb24odGhpcyk7IH1cbn0pO1xuXG52YXIgU3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHRoaXMuX3MgPSBzdWJzY3JpcHRpb247XG59O1xuXG5TdWJzY3JpcHRpb25PYnNlcnZlci5wcm90b3R5cGUgPSByZWRlZmluZUFsbCh7fSwge1xuICBuZXh0OiBmdW5jdGlvbiBuZXh0KHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuX3M7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIubmV4dCk7XG4gICAgICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2xvc2VTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBlcnJvcjogZnVuY3Rpb24gZXJyb3IodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHRocm93IHZhbHVlO1xuICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLmVycm9yKTtcbiAgICAgIGlmICghbSkgdGhyb3cgdmFsdWU7XG4gICAgICB2YWx1ZSA9IG0uY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5jb21wbGV0ZSk7XG4gICAgICAgIHZhbHVlID0gbSA/IG0uY2FsbChvYnNlcnZlciwgdmFsdWUpIDogdW5kZWZpbmVkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9IGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgJE9ic2VydmFibGUgPSBmdW5jdGlvbiBPYnNlcnZhYmxlKHN1YnNjcmliZXIpIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCAkT2JzZXJ2YWJsZSwgJ09ic2VydmFibGUnLCAnX2YnKS5fZiA9IGFGdW5jdGlvbihzdWJzY3JpYmVyKTtcbn07XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwge1xuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKG9ic2VydmVyLCB0aGlzLl9mKTtcbiAgfSxcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IChjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGFGdW5jdGlvbihmbik7XG4gICAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhhdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZuKHZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgIGNvbXBsZXRlOiByZXNvbHZlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLCB7XG4gIGZyb206IGZ1bmN0aW9uIGZyb20oeCkge1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogJE9ic2VydmFibGU7XG4gICAgdmFyIG1ldGhvZCA9IGdldE1ldGhvZChhbk9iamVjdCh4KVtPQlNFUlZBQkxFXSk7XG4gICAgaWYgKG1ldGhvZCkge1xuICAgICAgdmFyIG9ic2VydmFibGUgPSBhbk9iamVjdChtZXRob2QuY2FsbCh4KSk7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZS5jb25zdHJ1Y3RvciA9PT0gQyA/IG9ic2VydmFibGUgOiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmb3JPZih4LCBmYWxzZSwgZnVuY3Rpb24gKGl0KSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoaXQpO1xuICAgICAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIFJFVFVSTjtcbiAgICAgICAgICAgIH0pID09PSBSRVRVUk4pIHJldHVybjtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZG9uZSkgdGhyb3cgZTtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBkb25lID0gdHJ1ZTsgfTtcbiAgICB9KTtcbiAgfSxcbiAgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlbXMgPSBuZXcgQXJyYXkobCk7IGkgPCBsOykgaXRlbXNbaV0gPSBhcmd1bWVudHNbaSsrXTtcbiAgICByZXR1cm4gbmV3ICh0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiAkT2JzZXJ2YWJsZSkoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdGVtc1tqXSk7XG4gICAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgICAgICAgIH0gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBkb25lID0gdHJ1ZTsgfTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbmhpZGUoJE9ic2VydmFibGUucHJvdG90eXBlLCBPQlNFUlZBQkxFLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHsgT2JzZXJ2YWJsZTogJE9ic2VydmFibGUgfSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ09ic2VydmFibGUnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IG1ldGFkYXRhLnNldDtcblxubWV0YWRhdGEuZXhwKHsgZGVmaW5lTWV0YWRhdGE6IGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHRhcmdldEtleSkge1xuICBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCBhbk9iamVjdCh0YXJnZXQpLCB0b01ldGFLZXkodGFyZ2V0S2V5KSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gbWV0YWRhdGEubWFwO1xudmFyIHN0b3JlID0gbWV0YWRhdGEuc3RvcmU7XG5cbm1ldGFkYXRhLmV4cCh7IGRlbGV0ZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pO1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSwgZmFsc2UpO1xuICBpZiAobWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCB8fCAhbWV0YWRhdGFNYXBbJ2RlbGV0ZSddKG1ldGFkYXRhS2V5KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAobWV0YWRhdGFNYXAuc2l6ZSkgcmV0dXJuIHRydWU7XG4gIHZhciB0YXJnZXRNZXRhZGF0YSA9IHN0b3JlLmdldCh0YXJnZXQpO1xuICB0YXJnZXRNZXRhZGF0YVsnZGVsZXRlJ10odGFyZ2V0S2V5KTtcbiAgcmV0dXJuICEhdGFyZ2V0TWV0YWRhdGEuc2l6ZSB8fCBzdG9yZVsnZGVsZXRlJ10odGFyZ2V0KTtcbn0gfSk7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9lczYuc2V0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbnZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IG1ldGFkYXRhLmtleXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG52YXIgb3JkaW5hcnlNZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAoTywgUCkge1xuICB2YXIgb0tleXMgPSBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgdmFyIHBhcmVudCA9IGdldFByb3RvdHlwZU9mKE8pO1xuICBpZiAocGFyZW50ID09PSBudWxsKSByZXR1cm4gb0tleXM7XG4gIHZhciBwS2V5cyA9IG9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gIHJldHVybiBwS2V5cy5sZW5ndGggPyBvS2V5cy5sZW5ndGggPyBmcm9tKG5ldyBTZXQob0tleXMuY29uY2F0KHBLZXlzKSkpIDogcEtleXMgOiBvS2V5cztcbn07XG5cbm1ldGFkYXRhLmV4cCh7IGdldE1ldGFkYXRhS2V5czogZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlNZXRhZGF0YUtleXMoYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzFdKSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmdldDtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUdldE1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIHJldHVybiBwYXJlbnQgIT09IG51bGwgPyBvcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApIDogdW5kZWZpbmVkO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5R2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IG1ldGFkYXRhLmtleXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRPd25NZXRhZGF0YUtleXM6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1sxXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0T3duTWV0YWRhdGE6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldClcbiAgICAsIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5SGFzTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHBhcmVudCA9IGdldFByb3RvdHlwZU9mKE8pO1xuICByZXR1cm4gcGFyZW50ICE9PSBudWxsID8gb3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKSA6IGZhbHNlO1xufTtcblxubWV0YWRhdGEuZXhwKHsgaGFzTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5SGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgaGFzT3duTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldClcbiAgICAsIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciAkbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvTWV0YUtleSA9ICRtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9ICRtZXRhZGF0YS5zZXQ7XG5cbiRtZXRhZGF0YS5leHAoeyBtZXRhZGF0YTogZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSkge1xuICAgIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoXG4gICAgICBtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSxcbiAgICAgICh0YXJnZXRLZXkgIT09IHVuZGVmaW5lZCA/IGFuT2JqZWN0IDogYUZ1bmN0aW9uKSh0YXJnZXQpLFxuICAgICAgdG9NZXRhS2V5KHRhcmdldEtleSlcbiAgICApO1xuICB9O1xufSB9KTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1NldCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdTZXQnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnU2V0JywgeyB0b0pTT046IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tdG8tanNvbicpKCdTZXQnKSB9KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICBhdDogZnVuY3Rpb24gYXQocG9zKSB7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vU3RyaW5nLnByb3RvdHlwZS5tYXRjaEFsbC9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZ2V0RmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIFJlZ0V4cFByb3RvID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyICRSZWdFeHBTdHJpbmdJdGVyYXRvciA9IGZ1bmN0aW9uIChyZWdleHAsIHN0cmluZykge1xuICB0aGlzLl9yID0gcmVnZXhwO1xuICB0aGlzLl9zID0gc3RyaW5nO1xufTtcblxucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKSgkUmVnRXhwU3RyaW5nSXRlcmF0b3IsICdSZWdFeHAgU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIG1hdGNoID0gdGhpcy5fci5leGVjKHRoaXMuX3MpO1xuICByZXR1cm4geyB2YWx1ZTogbWF0Y2gsIGRvbmU6IG1hdGNoID09PSBudWxsIH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIG1hdGNoQWxsOiBmdW5jdGlvbiBtYXRjaEFsbChyZWdleHApIHtcbiAgICBkZWZpbmVkKHRoaXMpO1xuICAgIGlmICghaXNSZWdFeHAocmVnZXhwKSkgdGhyb3cgVHlwZUVycm9yKHJlZ2V4cCArICcgaXMgbm90IGEgcmVnZXhwIScpO1xuICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgIHZhciBmbGFncyA9ICdmbGFncycgaW4gUmVnRXhwUHJvdG8gPyBTdHJpbmcocmVnZXhwLmZsYWdzKSA6IGdldEZsYWdzLmNhbGwocmVnZXhwKTtcbiAgICB2YXIgcnggPSBuZXcgUmVnRXhwKHJlZ2V4cC5zb3VyY2UsIH5mbGFncy5pbmRleE9mKCdnJykgPyBmbGFncyA6ICdnJyArIGZsYWdzKTtcbiAgICByeC5sYXN0SW5kZXggPSB0b0xlbmd0aChyZWdleHAubGFzdEluZGV4KTtcbiAgICByZXR1cm4gbmV3ICRSZWdFeHBTdHJpbmdJdGVyYXRvcihyeCwgUyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhZCA9IHJlcXVpcmUoJy4vX3N0cmluZy1wYWQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8yODBcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogL1ZlcnNpb25cXC8xMFxcLlxcZCsoXFwuXFxkKyk/IFNhZmFyaVxcLy8udGVzdCh1c2VyQWdlbnQpLCAnU3RyaW5nJywge1xuICBwYWRFbmQ6IGZ1bmN0aW9uIHBhZEVuZChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgZmFsc2UpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYWQgPSByZXF1aXJlKCcuL19zdHJpbmctcGFkJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIC9WZXJzaW9uXFwvMTBcXC5cXGQrKFxcLlxcZCspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KSwgJ1N0cmluZycsIHtcbiAgcGFkU3RhcnQ6IGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltTGVmdCcsIGZ1bmN0aW9uICgkdHJpbSkge1xuICByZXR1cm4gZnVuY3Rpb24gdHJpbUxlZnQoKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDEpO1xuICB9O1xufSwgJ3RyaW1TdGFydCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3NlYm1hcmtiYWdlL2VjbWFzY3JpcHQtc3RyaW5nLWxlZnQtcmlnaHQtdHJpbVxucmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKSgndHJpbVJpZ2h0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltUmlnaHQoKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDIpO1xuICB9O1xufSwgJ3RyaW1FbmQnKTtcbiIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuIiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1nbG9iYWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3lzdGVtJywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha21hcC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1dlYWtNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWttYXAub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1dlYWtNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdXZWFrU2V0Jyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdXZWFrU2V0Jyk7XG4iLCJ2YXIgJGl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgSVRFUkFUT1IgPSB3a3MoJ2l0ZXJhdG9yJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbnZhciBBcnJheVZhbHVlcyA9IEl0ZXJhdG9ycy5BcnJheTtcblxudmFyIERPTUl0ZXJhYmxlcyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiBmYWxzZSxcbiAgQ1NTVmFsdWVMaXN0OiBmYWxzZSxcbiAgQ2xpZW50UmVjdExpc3Q6IGZhbHNlLFxuICBET01SZWN0TGlzdDogZmFsc2UsXG4gIERPTVN0cmluZ0xpc3Q6IGZhbHNlLFxuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiBmYWxzZSxcbiAgRmlsZUxpc3Q6IGZhbHNlLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogZmFsc2UsXG4gIEhUTUxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTEZvcm1FbGVtZW50OiBmYWxzZSxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IGZhbHNlLFxuICBNZWRpYUxpc3Q6IHRydWUsIC8vIFRPRE86IE5vdCBzcGVjIGNvbXBsaWFudCwgc2hvdWxkIGJlIGZhbHNlLlxuICBNaW1lVHlwZUFycmF5OiBmYWxzZSxcbiAgTmFtZWROb2RlTWFwOiBmYWxzZSxcbiAgTm9kZUxpc3Q6IHRydWUsXG4gIFBhaW50UmVxdWVzdExpc3Q6IGZhbHNlLFxuICBQbHVnaW46IGZhbHNlLFxuICBQbHVnaW5BcnJheTogZmFsc2UsXG4gIFNWR0xlbmd0aExpc3Q6IGZhbHNlLFxuICBTVkdOdW1iZXJMaXN0OiBmYWxzZSxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IGZhbHNlLFxuICBTVkdQb2ludExpc3Q6IGZhbHNlLFxuICBTVkdTdHJpbmdMaXN0OiBmYWxzZSxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogZmFsc2UsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IGZhbHNlLFxuICBTdHlsZVNoZWV0TGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIFRleHRUcmFja0N1ZUxpc3Q6IGZhbHNlLFxuICBUZXh0VHJhY2tMaXN0OiBmYWxzZSxcbiAgVG91Y2hMaXN0OiBmYWxzZVxufTtcblxuZm9yICh2YXIgY29sbGVjdGlvbnMgPSBnZXRLZXlzKERPTUl0ZXJhYmxlcyksIGkgPSAwOyBpIDwgY29sbGVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBjb2xsZWN0aW9uc1tpXTtcbiAgdmFyIGV4cGxpY2l0ID0gRE9NSXRlcmFibGVzW05BTUVdO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgdmFyIGtleTtcbiAgaWYgKHByb3RvKSB7XG4gICAgaWYgKCFwcm90b1tJVEVSQVRPUl0pIGhpZGUocHJvdG8sIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgaWYgKCFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gICAgSXRlcmF0b3JzW05BTUVdID0gQXJyYXlWYWx1ZXM7XG4gICAgaWYgKGV4cGxpY2l0KSBmb3IgKGtleSBpbiAkaXRlcmF0b3JzKSBpZiAoIXByb3RvW2tleV0pIHJlZGVmaW5lKHByb3RvLCBrZXksICRpdGVyYXRvcnNba2V5XSwgdHJ1ZSk7XG4gIH1cbn1cbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHRhc2sgPSByZXF1aXJlKCcuL190YXNrJyk7XG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuQiwge1xuICBzZXRJbW1lZGlhdGU6ICR0YXNrLnNldCxcbiAgY2xlYXJJbW1lZGlhdGU6ICR0YXNrLmNsZWFyXG59KTtcbiIsIi8vIGllOS0gc2V0VGltZW91dCAmIHNldEludGVydmFsIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmaXhcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHNsaWNlID0gW10uc2xpY2U7XG52YXIgTVNJRSA9IC9NU0lFIC5cXC4vLnRlc3QodXNlckFnZW50KTsgLy8gPC0gZGlydHkgaWU5LSBjaGVja1xudmFyIHdyYXAgPSBmdW5jdGlvbiAoc2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZm4sIHRpbWUgLyogLCAuLi5hcmdzICovKSB7XG4gICAgdmFyIGJvdW5kQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICAgIHZhciBhcmdzID0gYm91bmRBcmdzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogZmFsc2U7XG4gICAgcmV0dXJuIHNldChib3VuZEFyZ3MgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgICh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pKS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IDogZm4sIHRpbWUpO1xuICB9O1xufTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CICsgJGV4cG9ydC5GICogTVNJRSwge1xuICBzZXRUaW1lb3V0OiB3cmFwKGdsb2JhbC5zZXRUaW1lb3V0KSxcbiAgc2V0SW50ZXJ2YWw6IHdyYXAoZ2xvYmFsLnNldEludGVydmFsKVxufSk7XG4iLCJyZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmtleXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QucHJldmVudC1leHRlbnNpb25zJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1mcm96ZW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLXNlYWxlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZXh0ZW5zaWJsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmJpbmQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5oYXMtaW5zdGFuY2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnBhcnNlLWZsb2F0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5jb25zdHJ1Y3RvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tZml4ZWQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuZXBzaWxvbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtZmluaXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1uYW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIubWF4LXNhZmUtaW50ZWdlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIubWluLXNhZmUtaW50ZWdlcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmFjb3NoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYXNpbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hdGFuaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNicnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5jbHozMicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5leHBtMScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmh5cG90Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaW11bCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2lnbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnNpbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgudHJ1bmMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcucmF3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy50cmltJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuY29kZS1wb2ludC1hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZW5kcy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pbmNsdWRlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcucmVwZWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdGFydHMtd2l0aCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYW5jaG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5iaWcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5ib2xkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udGNvbG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250c2l6ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRhbGljcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcubGluaycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc21hbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3ViJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS5ub3cnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1qc29uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8taXNvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pcy1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmpvaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc2xpY2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29ydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsdGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnNvbWUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZXZlcnknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pbmRleC1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmNvcHktd2l0aGluJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kLWluZGV4Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LnNwZWNpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5tYXRjaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAucmVwbGFjZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zcGxpdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wcm9taXNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zZXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYud2Vhay1tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYud2Vhay1zZXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmRhdGEtdmlldycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQ4LWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWNsYW1wZWQtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQzMi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5mbG9hdDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0NjQtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmNvbnN0cnVjdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmVudW1lcmF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5oYXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3Qub3duLWtleXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5zZXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LmFycmF5LmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LmFycmF5LmZsYXR0ZW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLmF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1lbmQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1yaWdodCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtZ2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtc2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtZ2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hcC50by1qc29uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC50by1qc29uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hcC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcud2Vhay1tYXAub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcud2Vhay1zZXQub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcud2Vhay1tYXAuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLXNldC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lmdsb2JhbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zeXN0ZW0uZ2xvYmFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LmVycm9yLmlzLWVycm9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguY2xhbXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5kZWctcGVyLXJhZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmRlZ3JlZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5mc2NhbGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pYWRkaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlzdWJoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5yYWQtcGVyLWRlZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnJhZGlhbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5zY2FsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguc2lnbmJpdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucHJvbWlzZS50cnknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtb3duLW1ldGFkYXRhJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QubWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXNhcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYnNlcnZhYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLnRpbWVycycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5pbW1lZGlhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbW9kdWxlcy9fY29yZScpO1xuIiwiZXhwb3J0cy5yZWFkID0gZnVuY3Rpb24gKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSAoZSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSAobSAqIDI1NikgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnRzLndyaXRlID0gZnVuY3Rpb24gKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICgodmFsdWUgKiBjKSAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsIGV2YWwpKFwidGhpc1wiKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsImZ1bmN0aW9uIHdlYnBhY2tFbXB0eUNvbnRleHQocmVxKSB7XG5cdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHR0aHJvdyBlO1xufVxud2VicGFja0VtcHR5Q29udGV4dC5rZXlzID0gZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfTtcbndlYnBhY2tFbXB0eUNvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG53ZWJwYWNrRW1wdHlDb250ZXh0LmlkID0gXCIuL3NyYyBzeW5jIHJlY3Vyc2l2ZVwiOyIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHsgVGltZXIgfSBmcm9tICcuL1RpbWVyJztcclxuXHJcbmNvbnN0IERlZmF1bHRBY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IDYwOyAvLyBzZWNvbmRzXHJcblxyXG5leHBvcnQgY2xhc3MgQWNjZXNzVG9rZW5FdmVudHMge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHtcclxuICAgICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IERlZmF1bHRBY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSxcclxuICAgICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nVGltZXIgPSBuZXcgVGltZXIoXCJBY2Nlc3MgdG9rZW4gZXhwaXJpbmdcIiksXHJcbiAgICAgICAgYWNjZXNzVG9rZW5FeHBpcmVkVGltZXIgPSBuZXcgVGltZXIoXCJBY2Nlc3MgdG9rZW4gZXhwaXJlZFwiKVxyXG4gICAgfSA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTtcclxuXHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZyA9IGFjY2Vzc1Rva2VuRXhwaXJpbmdUaW1lcjtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQgPSBhY2Nlc3NUb2tlbkV4cGlyZWRUaW1lcjtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkKGNvbnRhaW5lcikge1xyXG4gICAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZXZlbnRzIGlmIHRoZXJlJ3MgYW4gYWNjZXNzIHRva2VuIGFuZCBpdCBoYXMgYW4gZXhwaXJhdGlvblxyXG4gICAgICAgIGlmIChjb250YWluZXIuYWNjZXNzX3Rva2VuICYmIGNvbnRhaW5lci5leHBpcmVzX2luICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbGV0IGR1cmF0aW9uID0gY29udGFpbmVyLmV4cGlyZXNfaW47XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkFjY2Vzc1Rva2VuRXZlbnRzLmxvYWQ6IGFjY2VzcyB0b2tlbiBwcmVzZW50LCByZW1haW5pbmcgZHVyYXRpb246XCIsIGR1cmF0aW9uKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZXhwaXJpbmcgaWYgd2Ugc3RpbGwgaGF2ZSB0aW1lXHJcbiAgICAgICAgICAgICAgICBsZXQgZXhwaXJpbmcgPSBkdXJhdGlvbiAtIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4cGlyaW5nIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyaW5nID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQWNjZXNzVG9rZW5FdmVudHMubG9hZDogcmVnaXN0ZXJpbmcgZXhwaXJpbmcgdGltZXIgaW46XCIsIGV4cGlyaW5nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmcuaW5pdChleHBpcmluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJBY2Nlc3NUb2tlbkV2ZW50cy5sb2FkOiBjYW5jZWxpbmcgZXhpc3RpbmcgZXhwaXJpbmcgdGltZXIgYmVjYXNlIHdlJ3JlIHBhc3QgZXhwaXJhdGlvbi5cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyaW5nLmNhbmNlbCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpdCdzIG5lZ2F0aXZlLCBpdCB3aWxsIHN0aWxsIGZpcmVcclxuICAgICAgICAgICAgbGV0IGV4cGlyZWQgPSBkdXJhdGlvbiArIDE7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkFjY2Vzc1Rva2VuRXZlbnRzLmxvYWQ6IHJlZ2lzdGVyaW5nIGV4cGlyZWQgdGltZXIgaW46XCIsIGV4cGlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQuaW5pdChleHBpcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmcuY2FuY2VsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJlZC5jYW5jZWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5sb2FkKCkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIkFjY2Vzc1Rva2VuRXZlbnRzLnVubG9hZDogY2FuY2VsaW5nIGV4aXN0aW5nIGFjY2VzcyB0b2tlbiB0aW1lcnNcIik7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZy5jYW5jZWwoKTtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQuY2FuY2VsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQWNjZXNzVG9rZW5FeHBpcmluZyhjYikge1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmcuYWRkSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVBY2Nlc3NUb2tlbkV4cGlyaW5nKGNiKSB7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZy5yZW1vdmVIYW5kbGVyKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRBY2Nlc3NUb2tlbkV4cGlyZWQoY2IpIHtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQuYWRkSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVBY2Nlc3NUb2tlbkV4cGlyZWQoY2IpIHtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQucmVtb3ZlSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5cclxuY29uc3QgRGVmYXVsdEludGVydmFsID0gMjAwMDtcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja1Nlc3Npb25JRnJhbWUge1xyXG4gICAgY29uc3RydWN0b3IoY2FsbGJhY2ssIGNsaWVudF9pZCwgdXJsLCBpbnRlcnZhbCwgc3RvcE9uRXJyb3IgPSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICAgICAgICB0aGlzLl9jbGllbnRfaWQgPSBjbGllbnRfaWQ7XHJcbiAgICAgICAgdGhpcy5fdXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMuX2ludGVydmFsID0gaW50ZXJ2YWwgfHwgRGVmYXVsdEludGVydmFsO1xyXG4gICAgICAgIHRoaXMuX3N0b3BPbkVycm9yID0gc3RvcE9uRXJyb3I7XHJcblxyXG4gICAgICAgIHZhciBpZHggPSB1cmwuaW5kZXhPZihcIi9cIiwgdXJsLmluZGV4T2YoXCIvL1wiKSArIDIpO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lX29yaWdpbiA9IHVybC5zdWJzdHIoMCwgaWR4KTtcclxuXHJcbiAgICAgICAgdGhpcy5fZnJhbWUgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcclxuXHJcbiAgICAgICAgLy8gc2hvdGd1biBhcHByb2FjaFxyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICB0aGlzLl9mcmFtZS5zdHlsZS53aWR0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5fZnJhbWUuc3R5bGUuaGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5fZnJhbWUuc3JjID0gdXJsO1xyXG4gICAgfVxyXG4gICAgbG9hZCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fZnJhbWUub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9mcmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2JvdW5kTWVzc2FnZUV2ZW50ID0gdGhpcy5fbWVzc2FnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5fYm91bmRNZXNzYWdlRXZlbnQsIGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIF9tZXNzYWdlKGUpIHtcclxuICAgICAgICBpZiAoZS5vcmlnaW4gPT09IHRoaXMuX2ZyYW1lX29yaWdpbiAmJlxyXG4gICAgICAgICAgICBlLnNvdXJjZSA9PT0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvd1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoZS5kYXRhID09PSBcImVycm9yXCIpIHtcclxuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkNoZWNrU2Vzc2lvbklGcmFtZTogZXJyb3IgbWVzc2FnZSBmcm9tIGNoZWNrIHNlc3Npb24gb3AgaWZyYW1lXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0b3BPbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZS5kYXRhID09PSBcImNoYW5nZWRcIikge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lOiBjaGFuZ2VkIG1lc3NhZ2UgZnJvbSBjaGVjayBzZXNzaW9uIG9wIGlmcmFtZVwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkNoZWNrU2Vzc2lvbklGcmFtZTogXCIgKyBlLmRhdGEgKyBcIiBtZXNzYWdlIGZyb20gY2hlY2sgc2Vzc2lvbiBvcCBpZnJhbWVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdGFydChzZXNzaW9uX3N0YXRlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25fc3RhdGUgIT09IHNlc3Npb25fc3RhdGUpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lLnN0YXJ0XCIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uX3N0YXRlID0gc2Vzc2lvbl9zdGF0ZTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzZW5kID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh0aGlzLl9jbGllbnRfaWQgKyBcIiBcIiArIHRoaXMuX3Nlc3Npb25fc3RhdGUsIHRoaXMuX2ZyYW1lX29yaWdpbik7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyB0cmlnZ2VyIG5vd1xyXG4gICAgICAgICAgICBzZW5kKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBhbmQgc2V0dXAgdGltZXJcclxuICAgICAgICAgICAgdGhpcy5fdGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoc2VuZCwgdGhpcy5faW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdG9wKCkge1xyXG4gICAgICAgIHRoaXMuX3Nlc3Npb25fc3RhdGUgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdGltZXIpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lLnN0b3BcIik7XHJcblxyXG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lcik7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgQ29yZG92YVBvcHVwV2luZG93IH0gZnJvbSAnLi9Db3Jkb3ZhUG9wdXBXaW5kb3cnO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvcmRvdmFJRnJhbWVOYXZpZ2F0b3Ige1xyXG5cclxuICAgIHByZXBhcmUocGFyYW1zKSB7XHJcbiAgICAgICAgcGFyYW1zLnBvcHVwV2luZG93RmVhdHVyZXMgPSAnaGlkZGVuPXllcyc7XHJcbiAgICAgICAgbGV0IHBvcHVwID0gbmV3IENvcmRvdmFQb3B1cFdpbmRvdyhwYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9wdXApO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IENvcmRvdmFQb3B1cFdpbmRvdyB9IGZyb20gJy4vQ29yZG92YVBvcHVwV2luZG93JztcclxuXHJcbmV4cG9ydCBjbGFzcyBDb3Jkb3ZhUG9wdXBOYXZpZ2F0b3Ige1xyXG5cclxuICAgIHByZXBhcmUocGFyYW1zKSB7XHJcbiAgICAgICAgbGV0IHBvcHVwID0gbmV3IENvcmRvdmFQb3B1cFdpbmRvdyhwYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9wdXApO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuXHJcbmNvbnN0IERlZmF1bHRQb3B1cEZlYXR1cmVzID0gJ2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sem9vbT1ubyc7XHJcbmNvbnN0IERlZmF1bHRQb3B1cFRhcmdldCA9IFwiX2JsYW5rXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29yZG92YVBvcHVwV2luZG93IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcclxuICAgICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZlYXR1cmVzID0gcGFyYW1zLnBvcHVwV2luZG93RmVhdHVyZXMgfHwgRGVmYXVsdFBvcHVwRmVhdHVyZXM7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBwYXJhbXMucG9wdXBXaW5kb3dUYXJnZXQgfHwgRGVmYXVsdFBvcHVwVGFyZ2V0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RfdXJpID0gcGFyYW1zLnN0YXJ0VXJsO1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIkNvcmRvdmFQb3B1cFdpbmRvdy5jdG9yOiByZWRpcmVjdF91cmk6IFwiICsgdGhpcy5yZWRpcmVjdF91cmkpO1xyXG4gICAgfVxyXG5cclxuICAgIF9pc0luQXBwQnJvd3Nlckluc3RhbGxlZChjb3Jkb3ZhTWV0YWRhdGEpIHtcclxuICAgICAgICByZXR1cm4gW1wiY29yZG92YS1wbHVnaW4taW5hcHBicm93c2VyXCIsIFwiY29yZG92YS1wbHVnaW4taW5hcHBicm93c2VyLmluYXBwYnJvd3NlclwiLCBcIm9yZy5hcGFjaGUuY29yZG92YS5pbmFwcGJyb3dzZXJcIl0uc29tZShmdW5jdGlvbiAobmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29yZG92YU1ldGFkYXRhLmhhc093blByb3BlcnR5KG5hbWUpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIFxyXG4gICAgbmF2aWdhdGUocGFyYW1zKSB7XHJcbiAgICAgICAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJObyB1cmwgcHJvdmlkZWRcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF3aW5kb3cuY29yZG92YSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yKFwiY29yZG92YSBpcyB1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIGNvcmRvdmFNZXRhZGF0YSA9IHdpbmRvdy5jb3Jkb3ZhLnJlcXVpcmUoXCJjb3Jkb3ZhL3BsdWdpbl9saXN0XCIpLm1ldGFkYXRhO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNJbkFwcEJyb3dzZXJJbnN0YWxsZWQoY29yZG92YU1ldGFkYXRhKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lcnJvcihcIkluQXBwQnJvd3NlciBwbHVnaW4gbm90IGZvdW5kXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAgPSBjb3Jkb3ZhLkluQXBwQnJvd3Nlci5vcGVuKHBhcmFtcy51cmwsIHRoaXMudGFyZ2V0LCB0aGlzLmZlYXR1cmVzKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3BvcHVwKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJDb3Jkb3ZhUG9wdXBXaW5kb3cubmF2aWdhdGU6IHBvcHVwIHN1Y2Nlc3NmdWxseSBjcmVhdGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9leGl0Q2FsbGJhY2tFdmVudCA9IHRoaXMuX2V4aXRDYWxsYmFjay5iaW5kKHRoaXMpOyBcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRTdGFydENhbGxiYWNrRXZlbnQgPSB0aGlzLl9sb2FkU3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3B1cC5hZGRFdmVudExpc3RlbmVyKFwiZXhpdFwiLCB0aGlzLl9leGl0Q2FsbGJhY2tFdmVudCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRzdGFydFwiLCB0aGlzLl9sb2FkU3RhcnRDYWxsYmFja0V2ZW50LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcihcIkVycm9yIG9wZW5pbmcgcG9wdXAgd2luZG93XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHByb21pc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgX2xvYWRTdGFydENhbGxiYWNrKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnVybC5pbmRleE9mKHRoaXMucmVkaXJlY3RfdXJpKSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zdWNjZXNzKHsgdXJsOiBldmVudC51cmwgfSk7XHJcbiAgICAgICAgfSAgICBcclxuICAgIH1cclxuICAgIF9leGl0Q2FsbGJhY2sobWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yKG1lc3NhZ2UpOyAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgX3N1Y2Nlc3MoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcclxuXHJcbiAgICAgICAgTG9nLmRlYnVnKFwiQ29yZG92YVBvcHVwV2luZG93OiBTdWNjZXNzZnVsIHJlc3BvbnNlIGZyb20gY29yZG92YSBwb3B1cCB3aW5kb3dcIik7XHJcbiAgICAgICAgdGhpcy5fcmVzb2x2ZShkYXRhKTtcclxuICAgIH1cclxuICAgIF9lcnJvcihtZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fY2xlYW51cCgpO1xyXG5cclxuICAgICAgICBMb2cuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5fcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5fY2xlYW51cCgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9jbGVhbnVwKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9wb3B1cCl7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkNvcmRvdmFQb3B1cFdpbmRvdzogY2xlYW5pbmcgdXAgcG9wdXBcIik7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJleGl0XCIsIHRoaXMuX2V4aXRDYWxsYmFja0V2ZW50LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2Fkc3RhcnRcIiwgdGhpcy5fbG9hZFN0YXJ0Q2FsbGJhY2tFdmVudCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3B1cC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wb3B1cCA9IG51bGw7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVycm9yUmVzcG9uc2UgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICBjb25zdHJ1Y3Rvcih7ZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uLCBlcnJvcl91cmksIHN0YXRlfT17fVxyXG4gICAgKSB7XHJcbiAgICAgICAgIGlmICghZXJyb3Ipe1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJObyBlcnJvciBwYXNzZWQgdG8gRXJyb3JSZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZXJyb3JcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlcihlcnJvcl9kZXNjcmlwdGlvbiB8fCBlcnJvcik7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiRXJyb3JSZXNwb25zZVwiO1xyXG5cclxuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgdGhpcy5lcnJvcl9kZXNjcmlwdGlvbiA9IGVycm9yX2Rlc2NyaXB0aW9uO1xyXG4gICAgICAgIHRoaXMuZXJyb3JfdXJpID0gZXJyb3JfdXJpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEV2ZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSGFuZGxlcihjYikge1xyXG4gICAgICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVIYW5kbGVyKGNiKSB7XHJcbiAgICAgICAgdmFyIGlkeCA9IHRoaXMuX2NhbGxiYWNrcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBjYik7XHJcbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmFpc2UoLi4ucGFyYW1zKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiRXZlbnQ6IFJhaXNpbmcgZXZlbnQ6IFwiICsgdGhpcy5fbmFtZSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9jYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2tzW2ldKC4uLnBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmNvbnN0IHRpbWVyID0ge1xyXG4gICAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9uIChjYiwgZHVyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gc2V0SW50ZXJ2YWwoY2IsIGR1cmF0aW9uKTtcclxuICAgIH0sXHJcbiAgICBjbGVhckludGVydmFsOiBmdW5jdGlvbiAoaGFuZGxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNsZWFySW50ZXJ2YWwoaGFuZGxlKTtcclxuICAgIH1cclxufTtcclxuXHJcbmxldCB0ZXN0aW5nID0gZmFsc2U7XHJcbmxldCByZXF1ZXN0ID0gbnVsbDtcclxuXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWwge1xyXG5cclxuICAgIHN0YXRpYyBfdGVzdGluZygpIHtcclxuICAgICAgICB0ZXN0aW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGxvY2F0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGVzdGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgbG9jYWxTdG9yYWdlKCkge1xyXG4gICAgICAgIGlmICghdGVzdGluZyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IHNlc3Npb25TdG9yYWdlKCkge1xyXG4gICAgICAgIGlmICghdGVzdGluZyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzZXRYTUxIdHRwUmVxdWVzdChuZXdSZXF1ZXN0KSB7XHJcbiAgICAgICAgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldCBYTUxIdHRwUmVxdWVzdCgpIHtcclxuICAgICAgICBpZiAoIXRlc3RpbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QgfHwgWE1MSHR0cFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGltZXIoKSB7XHJcbiAgICAgICAgaWYgKCF0ZXN0aW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aW1lcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBJRnJhbWVXaW5kb3cgfSBmcm9tICcuL0lGcmFtZVdpbmRvdyc7XHJcblxyXG5leHBvcnQgY2xhc3MgSUZyYW1lTmF2aWdhdG9yIHtcclxuXHJcbiAgICBwcmVwYXJlKHBhcmFtcykge1xyXG4gICAgICAgIGxldCBmcmFtZSA9IG5ldyBJRnJhbWVXaW5kb3cocGFyYW1zKTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZyYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBjYWxsYmFjayh1cmwpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJJRnJhbWVOYXZpZ2F0b3IuY2FsbGJhY2tcIik7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIElGcmFtZVdpbmRvdy5ub3RpZnlQYXJlbnQodXJsKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuXHJcbmNvbnN0IERlZmF1bHRUaW1lb3V0ID0gMTAwMDA7XHJcblxyXG5leHBvcnQgY2xhc3MgSUZyYW1lV2luZG93IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcclxuICAgICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9ib3VuZE1lc3NhZ2VFdmVudCA9IHRoaXMuX21lc3NhZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5fYm91bmRNZXNzYWdlRXZlbnQsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZnJhbWUgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcclxuXHJcbiAgICAgICAgLy8gc2hvdGd1biBhcHByb2FjaFxyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xyXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICB0aGlzLl9mcmFtZS5zdHlsZS53aWR0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5fZnJhbWUuc3R5bGUuaGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZnJhbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlKHBhcmFtcykge1xyXG4gICAgICAgIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiTm8gdXJsIHByb3ZpZGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSBwYXJhbXMuc2lsZW50UmVxdWVzdFRpbWVvdXQgfHwgRGVmYXVsdFRpbWVvdXQ7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIklGcmFtZVdpbmRvdy5uYXZpZ2F0ZTogVXNpbmcgdGltZW91dCBvZjpcIiwgdGltZW91dCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5fdGltZW91dC5iaW5kKHRoaXMpLCB0aW1lb3V0KTtcclxuICAgICAgICAgICAgdGhpcy5fZnJhbWUuc3JjID0gcGFyYW1zLnVybDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHByb21pc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgX3N1Y2Nlc3MoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcclxuXHJcbiAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93OiBTdWNjZXNzZnVsIHJlc3BvbnNlIGZyb20gZnJhbWUgd2luZG93XCIpO1xyXG4gICAgICAgIHRoaXMuX3Jlc29sdmUoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBfZXJyb3IobWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcclxuXHJcbiAgICAgICAgTG9nLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuX3JlamVjdChuZXcgRXJyb3IobWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBfY2xlYW51cCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZnJhbWUpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93OiBjbGVhbnVwXCIpO1xyXG5cclxuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMuX2JvdW5kTWVzc2FnZUV2ZW50LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xyXG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl90aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fYm91bmRNZXNzYWdlRXZlbnQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfdGltZW91dCgpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJJRnJhbWVXaW5kb3cudGltZW91dFwiKTtcclxuICAgICAgICB0aGlzLl9lcnJvcihcIkZyYW1lIHdpbmRvdyB0aW1lZCBvdXRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgX21lc3NhZ2UoZSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIklGcmFtZVdpbmRvdy5tZXNzYWdlXCIpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdGltZXIgJiZcclxuICAgICAgICAgICAgZS5vcmlnaW4gPT09IHRoaXMuX29yaWdpbiAmJlxyXG4gICAgICAgICAgICBlLnNvdXJjZSA9PT0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvd1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gZS5kYXRhO1xyXG4gICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWNjZXNzKHsgdXJsOiB1cmwgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcihcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBmcmFtZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgX29yaWdpbigpIHtcclxuICAgICAgICByZXR1cm4gbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyBsb2NhdGlvbi5ob3N0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBub3RpZnlQYXJlbnQodXJsKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93Lm5vdGlmeVBhcmVudFwiKTtcclxuXHJcbiAgICAgICAgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93ICE9PSB3aW5kb3cucGFyZW50KSB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCB8fCB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93Lm5vdGlmeVBhcmVudDogcG9zdGluZyB1cmwgbWVzc2FnZSB0byBwYXJlbnRcIik7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHVybCwgbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyBsb2NhdGlvbi5ob3N0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgSW5NZW1vcnlXZWJTdG9yYWdle1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICB0aGlzLl9kYXRhID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbShrZXkpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJJbk1lbW9yeVdlYlN0b3JhZ2UuZ2V0SXRlbVwiLCBrZXkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SXRlbShrZXksIHZhbHVlKXtcclxuICAgICAgICBMb2cuZGVidWcoXCJJbk1lbW9yeVdlYlN0b3JhZ2Uuc2V0SXRlbVwiLCBrZXkpO1xyXG4gICAgICAgIHRoaXMuX2RhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUl0ZW0oa2V5KXtcclxuICAgICAgICBMb2cuZGVidWcoXCJJbk1lbW9yeVdlYlN0b3JhZ2UucmVtb3ZlSXRlbVwiLCBrZXkpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxlbmd0aCgpIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fZGF0YSkubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGtleShpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLl9kYXRhKVtpbmRleF07XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgandzLCBLRVlVVElMIGFzIEtleVV0aWwsIFg1MDksIGNyeXB0bywgaGV4dG9iNjR1LCBiNjR0b2hleCB9IGZyb20gJy4uL2pzcnNhc2lnbi9kaXN0L2pzcnNhc2lnbi5qcyc7XHJcbi8vaW1wb3J0IHsgandzLCBLRVlVVElMIGFzIEtleVV0aWwsIFg1MDksIGNyeXB0bywgaGV4dG9iNjR1LCBiNjR0b2hleCB9IGZyb20gJ2pzcnNhc2lnbic7XHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuXHJcbmNvbnN0IEFsbG93ZWRTaWduaW5nQWxncyA9IFsnUlMyNTYnLCAnUlMzODQnLCAnUlM1MTInLCAnUFMyNTYnLCAnUFMzODQnLCAnUFM1MTInLCAnRVMyNTYnLCAnRVMzODQnLCAnRVM1MTInXTtcclxuXHJcbmV4cG9ydCBjbGFzcyBKb3NlVXRpbCB7XHJcblxyXG4gICAgc3RhdGljIHBhcnNlSnd0KGp3dCkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIkpvc2VVdGlsLnBhcnNlSnd0XCIpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciB0b2tlbiA9IGp3cy5KV1MucGFyc2Uoand0KTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcjogdG9rZW4uaGVhZGVyT2JqLFxyXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogdG9rZW4ucGF5bG9hZE9ialxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHZhbGlkYXRlSnd0KGp3dCwga2V5LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXcsIG5vdykge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIkpvc2VVdGlsLnZhbGlkYXRlSnd0XCIpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoa2V5Lmt0eSA9PT0gXCJSU0FcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleS5lICYmIGtleS5uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gS2V5VXRpbC5nZXRLZXkoa2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleS54NWMgJiYga2V5Lng1Yy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGV4ID0gYjY0dG9oZXgoa2V5Lng1Y1swXSk7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gWDUwOS5nZXRQdWJsaWNLZXlGcm9tQ2VydEhleChoZXgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwudmFsaWRhdGVKd3Q6IFJTQSBrZXkgbWlzc2luZyBrZXkgbWF0ZXJpYWxcIiwga2V5KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiUlNBIGtleSBtaXNzaW5nIGtleSBtYXRlcmlhbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5Lmt0eSA9PT0gXCJFQ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5LmNydiAmJiBrZXkueCAmJiBrZXkueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IEtleVV0aWwuZ2V0S2V5KGtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC52YWxpZGF0ZUp3dDogRUMga2V5IG1pc3Npbmcga2V5IG1hdGVyaWFsXCIsIGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkVDIGtleSBtaXNzaW5nIGtleSBtYXRlcmlhbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC52YWxpZGF0ZUp3dDogVW5zdXBwb3J0ZWQga2V5IHR5cGVcIiwga2V5ICYmIGtleS5rdHkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGtleSB0eXBlOiBcIiArIGtleSAmJiBrZXkua3R5KSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBKb3NlVXRpbC5fdmFsaWRhdGVKd3Qoand0LCBrZXksIGlzc3VlciwgYXVkaWVuY2UsIGNsb2NrU2tldywgbm93KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKGUgJiYgZS5tZXNzYWdlIHx8IGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXCJKV1QgdmFsaWRhdGlvbiBmYWlsZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUp3dEF0dHJpYnV0ZXMoand0LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXcsIG5vdykge1xyXG4gICAgICAgIGlmICghY2xvY2tTa2V3KSB7XHJcbiAgICAgICAgICAgIGNsb2NrU2tldyA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW5vdykge1xyXG4gICAgICAgICAgICBub3cgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcGF5bG9hZCA9IEpvc2VVdGlsLnBhcnNlSnd0KGp3dCkucGF5bG9hZDtcclxuXHJcbiAgICAgICAgaWYgKCFwYXlsb2FkLmlzcykge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IGlzc3VlciB3YXMgbm90IHByb3ZpZGVkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiaXNzdWVyIHdhcyBub3QgcHJvdmlkZWRcIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGF5bG9hZC5pc3MgIT09IGlzc3Vlcikge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IEludmFsaWQgaXNzdWVyIGluIHRva2VuXCIsIHBheWxvYWQuaXNzKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkludmFsaWQgaXNzdWVyIGluIHRva2VuOiBcIiArIHBheWxvYWQuaXNzKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXBheWxvYWQuYXVkKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogYXVkIHdhcyBub3QgcHJvdmlkZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJhdWQgd2FzIG5vdCBwcm92aWRlZFwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB2YWxpZEF1ZGllbmNlID0gcGF5bG9hZC5hdWQgPT09IGF1ZGllbmNlIHx8IChBcnJheS5pc0FycmF5KHBheWxvYWQuYXVkKSAmJiBwYXlsb2FkLmF1ZC5pbmRleE9mKGF1ZGllbmNlKSA+PSAwKTtcclxuICAgICAgICBpZiAoIXZhbGlkQXVkaWVuY2UpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBJbnZhbGlkIGF1ZGllbmNlIGluIHRva2VuXCIsIHBheWxvYWQuYXVkKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkludmFsaWQgYXVkaWVuY2UgaW4gdG9rZW46IFwiICsgcGF5bG9hZC5hdWQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBheWxvYWQuYXpwICYmIHBheWxvYWQuYXpwICE9PSBhdWRpZW5jZSkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IEludmFsaWQgYXpwIGluIHRva2VuXCIsIHBheWxvYWQuYXpwKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkludmFsaWQgYXpwIGluIHRva2VuOiBcIiArIHBheWxvYWQuYXpwKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbG93ZXJOb3cgPSBub3cgKyBjbG9ja1NrZXc7XHJcbiAgICAgICAgdmFyIHVwcGVyTm93ID0gbm93IC0gY2xvY2tTa2V3O1xyXG5cclxuICAgICAgICBpZiAoIXBheWxvYWQuaWF0KSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogaWF0IHdhcyBub3QgcHJvdmlkZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJpYXQgd2FzIG5vdCBwcm92aWRlZFwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsb3dlck5vdyA8IHBheWxvYWQuaWF0KSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogaWF0IGlzIGluIHRoZSBmdXR1cmVcIiwgcGF5bG9hZC5pYXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiaWF0IGlzIGluIHRoZSBmdXR1cmU6IFwiICsgcGF5bG9hZC5pYXQpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChwYXlsb2FkLm5iZiAmJiBsb3dlck5vdyA8IHBheWxvYWQubmJmKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogbmJmIGlzIGluIHRoZSBmdXR1cmVcIiwgcGF5bG9hZC5uYmYpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwibmJmIGlzIGluIHRoZSBmdXR1cmU6IFwiICsgcGF5bG9hZC5uYmYpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghcGF5bG9hZC5leHApIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBleHAgd2FzIG5vdCBwcm92aWRlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImV4cCB3YXMgbm90IHByb3ZpZGVkXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBheWxvYWQuZXhwIDwgdXBwZXJOb3cpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBleHAgaXMgaW4gdGhlIHBhc3RcIiwgcGF5bG9hZC5leHApO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiZXhwIGlzIGluIHRoZSBwYXN0OlwiICsgcGF5bG9hZC5leHApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocGF5bG9hZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIF92YWxpZGF0ZUp3dChqd3QsIGtleSwgaXNzdWVyLCBhdWRpZW5jZSwgY2xvY2tTa2V3LCBub3cpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIEpvc2VVdGlsLnZhbGlkYXRlSnd0QXR0cmlidXRlcyhqd3QsIGlzc3VlciwgYXVkaWVuY2UsIGNsb2NrU2tldywgbm93KS50aGVuKHBheWxvYWQgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFqd3MuSldTLnZlcmlmeShqd3QsIGtleSwgQWxsb3dlZFNpZ25pbmdBbGdzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogc2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJzaWduYXR1cmUgdmFsaWRhdGlvbiBmYWlsZWRcIikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoZSAmJiBlLm1lc3NhZ2UgfHwgZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwic2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkXCIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXNoU3RyaW5nKHZhbHVlLCBhbGcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3J5cHRvLlV0aWwuaGFzaFN0cmluZyh2YWx1ZSwgYWxnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaGV4VG9CYXNlNjRVcmwodmFsdWUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gaGV4dG9iNjR1KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vR2xvYmFsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBKc29uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihhZGRpdGlvbmFsQ29udGVudFR5cGVzID0gbnVsbCwgWE1MSHR0cFJlcXVlc3RDdG9yID0gR2xvYmFsLlhNTEh0dHBSZXF1ZXN0KSB7XHJcbiAgICAgICAgaWYgKGFkZGl0aW9uYWxDb250ZW50VHlwZXMgJiYgQXJyYXkuaXNBcnJheShhZGRpdGlvbmFsQ29udGVudFR5cGVzKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRUeXBlcyA9IGFkZGl0aW9uYWxDb250ZW50VHlwZXMuc2xpY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fY29udGVudFR5cGVzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NvbnRlbnRUeXBlcy5wdXNoKCdhcHBsaWNhdGlvbi9qc29uJyk7XHJcblxyXG4gICAgICAgIHRoaXMuX1hNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3RDdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEpzb24odXJsLCB0b2tlbikge1xyXG4gICAgICAgIGlmICghdXJsKXtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiSnNvblNlcnZpY2UuZ2V0SnNvbjogTm8gdXJsIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJsXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgTG9nLmRlYnVnKFwiSnNvblNlcnZpY2UuZ2V0SnNvbiwgdXJsOiBcIiwgdXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXEgPSBuZXcgdGhpcy5fWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICAgICAgcmVxLm9wZW4oJ0dFVCcsIHVybCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgYWxsb3dlZENvbnRlbnRUeXBlcyA9IHRoaXMuX2NvbnRlbnRUeXBlcztcclxuXHJcbiAgICAgICAgICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkpzb25TZXJ2aWNlLmdldEpzb246IEhUVFAgcmVzcG9uc2UgcmVjZWl2ZWQsIHN0YXR1c1wiLCByZXEuc3RhdHVzKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50VHlwZSA9IHJlcS5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IGFsbG93ZWRDb250ZW50VHlwZXMuZmluZChpdGVtPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUuc3RhcnRzV2l0aChpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UocmVxLnJlc3BvbnNlVGV4dCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSnNvblNlcnZpY2UuZ2V0SnNvbjogRXJyb3IgcGFyc2luZyBKU09OIHJlc3BvbnNlXCIsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiSW52YWxpZCByZXNwb25zZSBDb250ZW50LVR5cGU6IFwiICsgY29udGVudFR5cGUgKyBcIiwgZnJvbSBVUkw6IFwiICsgdXJsKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoRXJyb3IocmVxLnN0YXR1c1RleHQgKyBcIiAoXCIgKyByZXEuc3RhdHVzICsgXCIpXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKc29uU2VydmljZS5nZXRKc29uOiBuZXR3b3JrIGVycm9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiTmV0d29yayBFcnJvclwiKSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkpzb25TZXJ2aWNlLmdldEpzb246IHRva2VuIHBhc3NlZCwgc2V0dGluZyBBdXRob3JpemF0aW9uIGhlYWRlclwiKTtcclxuICAgICAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIiArIHRva2VuKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVxLnNlbmQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwb3N0Rm9ybSh1cmwsIHBheWxvYWQpIHtcclxuICAgICAgICBpZiAoIXVybCl7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLnBvc3RGb3JtOiBObyB1cmwgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmxcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBMb2cuZGVidWcoXCJKc29uU2VydmljZS5wb3N0Rm9ybSwgdXJsOiBcIiwgdXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXEgPSBuZXcgdGhpcy5fWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICAgICAgcmVxLm9wZW4oJ1BPU1QnLCB1cmwpO1xyXG5cclxuICAgICAgICAgICAgdmFyIGFsbG93ZWRDb250ZW50VHlwZXMgPSB0aGlzLl9jb250ZW50VHlwZXM7XHJcblxyXG4gICAgICAgICAgICByZXEub25sb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJKc29uU2VydmljZS5wb3N0Rm9ybTogSFRUUCByZXNwb25zZSByZWNlaXZlZCwgc3RhdHVzXCIsIHJlcS5zdGF0dXMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZXEuc3RhdHVzID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gYWxsb3dlZENvbnRlbnRUeXBlcy5maW5kKGl0ZW09PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5zdGFydHNXaXRoKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShyZXEucmVzcG9uc2VUZXh0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKc29uU2VydmljZS5wb3N0Rm9ybTogRXJyb3IgcGFyc2luZyBKU09OIHJlc3BvbnNlXCIsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiSW52YWxpZCByZXNwb25zZSBDb250ZW50LVR5cGU6IFwiICsgY29udGVudFR5cGUgKyBcIiwgZnJvbSBVUkw6IFwiICsgdXJsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZXEuc3RhdHVzID09PSA0MDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gYWxsb3dlZENvbnRlbnRUeXBlcy5maW5kKGl0ZW09PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5zdGFydHNXaXRoKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXlsb2FkID0gSlNPTi5wYXJzZShyZXEucmVzcG9uc2VUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLnBvc3RGb3JtOiBFcnJvciBmcm9tIHNlcnZlcjogXCIsIHBheWxvYWQuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKHBheWxvYWQuZXJyb3IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSnNvblNlcnZpY2UucG9zdEZvcm06IEVycm9yIHBhcnNpbmcgSlNPTiByZXNwb25zZVwiLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKHJlcS5zdGF0dXNUZXh0ICsgXCIgKFwiICsgcmVxLnN0YXR1cyArIFwiKVwiKSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSnNvblNlcnZpY2UucG9zdEZvcm06IG5ldHdvcmsgZXJyb3JcIik7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoRXJyb3IoXCJOZXR3b3JrIEVycm9yXCIpKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCBib2R5ID0gXCJcIjtcclxuICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gcGF5bG9hZCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHBheWxvYWRba2V5XTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ICs9IFwiJlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keSArPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICBib2R5ICs9IFwiPVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvZHkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIik7XHJcbiAgICAgICAgICAgIHJlcS5zZW5kKGJvZHkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmxldCBub3BMb2dnZXIgPSB7XHJcbiAgICBkZWJ1Zygpe30sXHJcbiAgICBpbmZvKCl7fSxcclxuICAgIHdhcm4oKXt9LFxyXG4gICAgZXJyb3IoKXt9XHJcbn07XHJcblxyXG5jb25zdCBOT05FID0gMDtcclxuY29uc3QgRVJST1IgPSAxO1xyXG5jb25zdCBXQVJOID0gMjtcclxuY29uc3QgSU5GTyA9IDM7XHJcbmNvbnN0IERFQlVHID0gNDtcclxuXHJcbmxldCBsb2dnZXI7XHJcbmxldCBsZXZlbDtcclxuXHJcbmV4cG9ydCBjbGFzcyBMb2cge1xyXG4gICAgc3RhdGljIGdldCBOT05FKCkge3JldHVybiBOT05FfTtcclxuICAgIHN0YXRpYyBnZXQgRVJST1IoKSB7cmV0dXJuIEVSUk9SfTtcclxuICAgIHN0YXRpYyBnZXQgV0FSTigpIHtyZXR1cm4gV0FSTn07XHJcbiAgICBzdGF0aWMgZ2V0IElORk8oKSB7cmV0dXJuIElORk99O1xyXG4gICAgc3RhdGljIGdldCBERUJVRygpIHtyZXR1cm4gREVCVUd9O1xyXG4gICAgXHJcbiAgICBzdGF0aWMgcmVzZXQoKXtcclxuICAgICAgICBsZXZlbCA9IElORk87XHJcbiAgICAgICAgbG9nZ2VyID0gbm9wTG9nZ2VyO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgZ2V0IGxldmVsKCl7XHJcbiAgICAgICAgcmV0dXJuIGxldmVsO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIHNldCBsZXZlbCh2YWx1ZSl7XHJcbiAgICAgICAgaWYgKE5PTkUgPD0gdmFsdWUgJiYgdmFsdWUgPD0gREVCVUcpe1xyXG4gICAgICAgICAgICBsZXZlbCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBsb2cgbGV2ZWxcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgZ2V0IGxvZ2dlcigpe1xyXG4gICAgICAgIHJldHVybiBsb2dnZXI7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgc2V0IGxvZ2dlcih2YWx1ZSl7XHJcbiAgICAgICAgaWYgKCF2YWx1ZS5kZWJ1ZyAmJiB2YWx1ZS5pbmZvKSB7XHJcbiAgICAgICAgICAgIC8vIGp1c3QgdG8gc3RheSBiYWNrd2FyZHMgY29tcGF0LiBjYW4gcmVtb3ZlIGluIDIuMFxyXG4gICAgICAgICAgICB2YWx1ZS5kZWJ1ZyA9IHZhbHVlLmluZm87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWUuZGVidWcgJiYgdmFsdWUuaW5mbyAmJiB2YWx1ZS53YXJuICYmIHZhbHVlLmVycm9yKXtcclxuICAgICAgICAgICAgbG9nZ2VyID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvZ2dlclwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBkZWJ1ZyguLi5hcmdzKXtcclxuICAgICAgICBpZiAobGV2ZWwgPj0gREVCVUcpe1xyXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcuYXBwbHkobG9nZ2VyLCBBcnJheS5mcm9tKGFyZ3MpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgaW5mbyguLi5hcmdzKXtcclxuICAgICAgICBpZiAobGV2ZWwgPj0gSU5GTyl7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvLmFwcGx5KGxvZ2dlciwgQXJyYXkuZnJvbShhcmdzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3RhdGljIHdhcm4oLi4uYXJncyl7XHJcbiAgICAgICAgaWYgKGxldmVsID49IFdBUk4pe1xyXG4gICAgICAgICAgICBsb2dnZXIud2Fybi5hcHBseShsb2dnZXIsIEFycmF5LmZyb20oYXJncykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN0YXRpYyBlcnJvciguLi5hcmdzKXtcclxuICAgICAgICBpZiAobGV2ZWwgPj0gRVJST1Ipe1xyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IuYXBwbHkobG9nZ2VyLCBBcnJheS5mcm9tKGFyZ3MpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkxvZy5yZXNldCgpO1xyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IEpzb25TZXJ2aWNlIH0gZnJvbSAnLi9Kc29uU2VydmljZSc7XHJcblxyXG5jb25zdCBPaWRjTWV0YWRhdGFVcmxQYXRoID0gJy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YVNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3Ioc2V0dGluZ3MsIEpzb25TZXJ2aWNlQ3RvciA9IEpzb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJNZXRhZGF0YVNlcnZpY2U6IE5vIHNldHRpbmdzIHBhc3NlZCB0byBNZXRhZGF0YVNlcnZpY2VcIik7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNldHRpbmdzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9qc29uU2VydmljZSA9IG5ldyBKc29uU2VydmljZUN0b3IoWydhcHBsaWNhdGlvbi9qd2stc2V0K2pzb24nXSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1ldGFkYXRhVXJsKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fbWV0YWRhdGFVcmwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLm1ldGFkYXRhVXJsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCA9IHRoaXMuX3NldHRpbmdzLm1ldGFkYXRhVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWV0YWRhdGFVcmwgPSB0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX21ldGFkYXRhVXJsICYmIHRoaXMuX21ldGFkYXRhVXJsLmluZGV4T2YoT2lkY01ldGFkYXRhVXJsUGF0aCkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21ldGFkYXRhVXJsW3RoaXMuX21ldGFkYXRhVXJsLmxlbmd0aCAtIDFdICE9PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWV0YWRhdGFVcmwgKz0gJy8nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCArPSBPaWRjTWV0YWRhdGFVcmxQYXRoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWV0YWRhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLm1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YTogUmV0dXJuaW5nIG1ldGFkYXRhIGZyb20gc2V0dGluZ3NcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fc2V0dGluZ3MubWV0YWRhdGEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm1ldGFkYXRhVXJsKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YTogTm8gYXV0aG9yaXR5IG9yIG1ldGFkYXRhVXJsIGNvbmZpZ3VyZWQgb24gc2V0dGluZ3NcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBhdXRob3JpdHkgb3IgbWV0YWRhdGFVcmwgY29uZmlndXJlZCBvbiBzZXR0aW5nc1wiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBMb2cuZGVidWcoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGE6IGdldHRpbmcgbWV0YWRhdGEgZnJvbVwiLCB0aGlzLm1ldGFkYXRhVXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLmdldEpzb24odGhpcy5tZXRhZGF0YVVybClcclxuICAgICAgICAgICAgLnRoZW4obWV0YWRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiTWV0YWRhdGFTZXJ2aWNlLmdldE1ldGFkYXRhOiBqc29uIHJlY2VpdmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3MubWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXNzdWVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwiaXNzdWVyXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEF1dGhvcml6YXRpb25FbmRwb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcImF1dGhvcml6YXRpb25fZW5kcG9pbnRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VXNlckluZm9FbmRwb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcInVzZXJpbmZvX2VuZHBvaW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRva2VuRW5kcG9pbnQob3B0aW9uYWw9dHJ1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwidG9rZW5fZW5kcG9pbnRcIiwgb3B0aW9uYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENoZWNrU2Vzc2lvbklmcmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcImNoZWNrX3Nlc3Npb25faWZyYW1lXCIsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVuZFNlc3Npb25FbmRwb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcImVuZF9zZXNzaW9uX2VuZHBvaW50XCIsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJldm9jYXRpb25FbmRwb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcInJldm9jYXRpb25fZW5kcG9pbnRcIiwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0S2V5c0VuZHBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwiandrc191cmlcIiwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2dldE1ldGFkYXRhUHJvcGVydHkobmFtZSwgb3B0aW9uYWw9ZmFsc2UpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGFQcm9wZXJ0eSBmb3I6IFwiICsgbmFtZSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1ldGFkYXRhKCkudGhlbihtZXRhZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YVByb3BlcnR5OiBtZXRhZGF0YSByZWNpZXZlZFwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YVtuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbmFsID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLndhcm4oXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGFQcm9wZXJ0eTogTWV0YWRhdGEgZG9lcyBub3QgY29udGFpbiBvcHRpb25hbCBwcm9wZXJ0eSBcIiArIG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGFQcm9wZXJ0eTogTWV0YWRhdGEgZG9lcyBub3QgY29udGFpbiBwcm9wZXJ0eSBcIiArIG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGFkYXRhIGRvZXMgbm90IGNvbnRhaW4gcHJvcGVydHkgXCIgKyBuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhW25hbWVdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNpZ25pbmdLZXlzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zaWduaW5nS2V5cykge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0U2lnbmluZ0tleXM6IFJldHVybmluZyBzaWduaW5nS2V5cyBmcm9tIHNldHRpbmdzXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3NldHRpbmdzLnNpZ25pbmdLZXlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwiandrc191cmlcIikudGhlbihqd2tzX3VyaSA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRTaWduaW5nS2V5czogandrc191cmkgcmVjZWl2ZWRcIiwgandrc191cmkpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLmdldEpzb24oandrc191cmkpLnRoZW4oa2V5U2V0ID0+IHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRTaWduaW5nS2V5czoga2V5IHNldCByZWNlaXZlZFwiLCBrZXlTZXQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgha2V5U2V0LmtleXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0U2lnbmluZ0tleXM6IE1pc3Npbmcga2V5cyBvbiBrZXlzZXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBrZXlzIG9uIGtleXNldFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR0aW5ncy5zaWduaW5nS2V5cyA9IGtleVNldC5rZXlzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzLnNpZ25pbmdLZXlzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IE9pZGNDbGllbnRTZXR0aW5ncyB9IGZyb20gJy4vT2lkY0NsaWVudFNldHRpbmdzJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4vRXJyb3JSZXNwb25zZSc7XHJcbmltcG9ydCB7IFNpZ25pblJlcXVlc3QgfSBmcm9tICcuL1NpZ25pblJlcXVlc3QnO1xyXG5pbXBvcnQgeyBTaWduaW5SZXNwb25zZSB9IGZyb20gJy4vU2lnbmluUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBTaWdub3V0UmVxdWVzdCB9IGZyb20gJy4vU2lnbm91dFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBTaWdub3V0UmVzcG9uc2UgfSBmcm9tICcuL1NpZ25vdXRSZXNwb25zZSc7XHJcbmltcG9ydCB7IFNpZ25pblN0YXRlIH0gZnJvbSAnLi9TaWduaW5TdGF0ZSc7XHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi9TdGF0ZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgT2lkY0NsaWVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncyA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHNldHRpbmdzIGluc3RhbmNlb2YgT2lkY0NsaWVudFNldHRpbmdzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzID0gc2V0dGluZ3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IG5ldyBPaWRjQ2xpZW50U2V0dGluZ3Moc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgX3N0YXRlU3RvcmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc3RhdGVTdG9yZTtcclxuICAgIH1cclxuICAgIGdldCBfdmFsaWRhdG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnZhbGlkYXRvcjtcclxuICAgIH1cclxuICAgIGdldCBfbWV0YWRhdGFTZXJ2aWNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLm1ldGFkYXRhU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xyXG4gICAgfVxyXG4gICAgZ2V0IG1ldGFkYXRhU2VydmljZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVNpZ25pblJlcXVlc3Qoe1xyXG4gICAgICAgIHJlc3BvbnNlX3R5cGUsIHNjb3BlLCByZWRpcmVjdF91cmksXHJcbiAgICAgICAgLy8gZGF0YSB3YXMgbWVhbnQgdG8gYmUgdGhlIHBsYWNlIGEgY2FsbGVyIGNvdWxkIGluZGljYXRlIHRoZSBkYXRhIHRvXHJcbiAgICAgICAgLy8gaGF2ZSByb3VuZCB0cmlwcGVkLCBidXQgcGVvcGxlIHdlcmUgZ2V0dGluZyBjb25mdXNlZCwgc28gaSBhZGRlZCBzdGF0ZSAoc2luY2UgdGhhdCBtYXRjaGVzIHRoZSBzcGVjKVxyXG4gICAgICAgIC8vIGFuZCBzbyBub3cgaWYgZGF0YSBpcyBub3QgcGFzc2VkLCBidXQgc3RhdGUgaXMgdGhlbiBzdGF0ZSB3aWxsIGJlIHVzZWRcclxuICAgICAgICBkYXRhLCBzdGF0ZSwgcHJvbXB0LCBkaXNwbGF5LCBtYXhfYWdlLCB1aV9sb2NhbGVzLCBpZF90b2tlbl9oaW50LCBsb2dpbl9oaW50LCBhY3JfdmFsdWVzLFxyXG4gICAgICAgIHJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0X3VyaSwgcmVzcG9uc2VfbW9kZSwgZXh0cmFRdWVyeVBhcmFtcyB9ID0ge30sXHJcbiAgICAgICAgc3RhdGVTdG9yZVxyXG4gICAgKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5jcmVhdGVTaWduaW5SZXF1ZXN0XCIpO1xyXG5cclxuICAgICAgICBsZXQgY2xpZW50X2lkID0gdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkO1xyXG4gICAgICAgIHJlc3BvbnNlX3R5cGUgPSByZXNwb25zZV90eXBlIHx8IHRoaXMuX3NldHRpbmdzLnJlc3BvbnNlX3R5cGU7XHJcbiAgICAgICAgc2NvcGUgPSBzY29wZSB8fCB0aGlzLl9zZXR0aW5ncy5zY29wZTtcclxuICAgICAgICByZWRpcmVjdF91cmkgPSByZWRpcmVjdF91cmkgfHwgdGhpcy5fc2V0dGluZ3MucmVkaXJlY3RfdXJpO1xyXG5cclxuICAgICAgICAvLyBpZF90b2tlbl9oaW50LCBsb2dpbl9oaW50IGFyZW4ndCBhbGxvd2VkIG9uIF9zZXR0aW5nc1xyXG4gICAgICAgIHByb21wdCA9IHByb21wdCB8fCB0aGlzLl9zZXR0aW5ncy5wcm9tcHQ7XHJcbiAgICAgICAgZGlzcGxheSA9IGRpc3BsYXkgfHwgdGhpcy5fc2V0dGluZ3MuZGlzcGxheTtcclxuICAgICAgICBtYXhfYWdlID0gbWF4X2FnZSB8fCB0aGlzLl9zZXR0aW5ncy5tYXhfYWdlO1xyXG4gICAgICAgIHVpX2xvY2FsZXMgPSB1aV9sb2NhbGVzIHx8IHRoaXMuX3NldHRpbmdzLnVpX2xvY2FsZXM7XHJcbiAgICAgICAgYWNyX3ZhbHVlcyA9IGFjcl92YWx1ZXMgfHwgdGhpcy5fc2V0dGluZ3MuYWNyX3ZhbHVlcztcclxuICAgICAgICByZXNvdXJjZSA9IHJlc291cmNlIHx8IHRoaXMuX3NldHRpbmdzLnJlc291cmNlO1xyXG4gICAgICAgIHJlc3BvbnNlX21vZGUgPSByZXNwb25zZV9tb2RlIHx8IHRoaXMuX3NldHRpbmdzLnJlc3BvbnNlX21vZGU7XHJcbiAgICAgICAgZXh0cmFRdWVyeVBhcmFtcyA9IGV4dHJhUXVlcnlQYXJhbXMgfHwgdGhpcy5fc2V0dGluZ3MuZXh0cmFRdWVyeVBhcmFtcztcclxuXHJcbiAgICAgICAgbGV0IGF1dGhvcml0eSA9IHRoaXMuX3NldHRpbmdzLmF1dGhvcml0eTtcclxuXHJcbiAgICAgICAgaWYgKFNpZ25pblJlcXVlc3QuaXNDb2RlKHJlc3BvbnNlX3R5cGUpICYmIHJlc3BvbnNlX3R5cGUgIT09IFwiY29kZVwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJPcGVuSUQgQ29ubmVjdCBoeWJyaWQgZmxvdyBpcyBub3Qgc3VwcG9ydGVkXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvbkVuZHBvaW50KCkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJPaWRjQ2xpZW50LmNyZWF0ZVNpZ25pblJlcXVlc3Q6IFJlY2VpdmVkIGF1dGhvcml6YXRpb24gZW5kcG9pbnRcIiwgdXJsKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzaWduaW5SZXF1ZXN0ID0gbmV3IFNpZ25pblJlcXVlc3Qoe1xyXG4gICAgICAgICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgICAgICAgY2xpZW50X2lkLFxyXG4gICAgICAgICAgICAgICAgcmVkaXJlY3RfdXJpLFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VfdHlwZSxcclxuICAgICAgICAgICAgICAgIHNjb3BlLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSB8fCBzdGF0ZSxcclxuICAgICAgICAgICAgICAgIGF1dGhvcml0eSxcclxuICAgICAgICAgICAgICAgIHByb21wdCwgZGlzcGxheSwgbWF4X2FnZSwgdWlfbG9jYWxlcywgaWRfdG9rZW5faGludCwgbG9naW5faGludCwgYWNyX3ZhbHVlcyxcclxuICAgICAgICAgICAgICAgIHJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0X3VyaSwgZXh0cmFRdWVyeVBhcmFtcywgcmVzcG9uc2VfbW9kZVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHZhciBzaWduaW5TdGF0ZSA9IHNpZ25pblJlcXVlc3Quc3RhdGU7XHJcbiAgICAgICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gc3RhdGVTdG9yZS5zZXQoc2lnbmluU3RhdGUuaWQsIHNpZ25pblN0YXRlLnRvU3RvcmFnZVN0cmluZygpKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzaWduaW5SZXF1ZXN0O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzU2lnbmluUmVzcG9uc2UodXJsLCBzdGF0ZVN0b3JlKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbmluUmVzcG9uc2VcIik7XHJcblxyXG4gICAgICAgIGxldCB1c2VRdWVyeSA9IHRoaXMuX3NldHRpbmdzLnJlc3BvbnNlX21vZGUgPT09IFwicXVlcnlcIiB8fCBcclxuICAgICAgICAgICAgKCF0aGlzLl9zZXR0aW5ncy5yZXNwb25zZV9tb2RlICYmIFNpZ25pblJlcXVlc3QuaXNDb2RlKHRoaXMuX3NldHRpbmdzLnJlc3BvbnNlX3R5cGUpKTtcclxuICAgICAgICBsZXQgZGVsaW1pdGVyID0gdXNlUXVlcnkgPyBcIj9cIiA6IFwiI1wiO1xyXG5cclxuICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgU2lnbmluUmVzcG9uc2UodXJsLCBkZWxpbWl0ZXIpO1xyXG5cclxuICAgICAgICBpZiAoIXJlc3BvbnNlLnN0YXRlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIk9pZGNDbGllbnQucHJvY2Vzc1NpZ25pblJlc3BvbnNlOiBObyBzdGF0ZSBpbiByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHN0YXRlIGluIHJlc3BvbnNlXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XHJcblxyXG4gICAgICAgIHJldHVybiBzdGF0ZVN0b3JlLnJlbW92ZShyZXNwb25zZS5zdGF0ZSkudGhlbihzdG9yZWRTdGF0ZVN0cmluZyA9PiB7XHJcbiAgICAgICAgICAgIGlmICghc3RvcmVkU3RhdGVTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIk9pZGNDbGllbnQucHJvY2Vzc1NpZ25pblJlc3BvbnNlOiBObyBtYXRjaGluZyBzdGF0ZSBmb3VuZCBpbiBzdG9yYWdlXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbWF0Y2hpbmcgc3RhdGUgZm91bmQgaW4gc3RvcmFnZVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHN0YXRlID0gU2lnbmluU3RhdGUuZnJvbVN0b3JhZ2VTdHJpbmcoc3RvcmVkU3RhdGVTdHJpbmcpO1xyXG5cclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbmluUmVzcG9uc2U6IFJlY2VpdmVkIHN0YXRlIGZyb20gc3RvcmFnZTsgdmFsaWRhdGluZyByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvci52YWxpZGF0ZVNpZ25pblJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlU2lnbm91dFJlcXVlc3Qoe2lkX3Rva2VuX2hpbnQsIGRhdGEsIHN0YXRlLCBwb3N0X2xvZ291dF9yZWRpcmVjdF91cml9ID0ge30sXHJcbiAgICAgICAgc3RhdGVTdG9yZVxyXG4gICAgKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5jcmVhdGVTaWdub3V0UmVxdWVzdFwiKTtcclxuXHJcbiAgICAgICAgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpID0gcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIHx8IHRoaXMuX3NldHRpbmdzLnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRFbmRTZXNzaW9uRW5kcG9pbnQoKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJPaWRjQ2xpZW50LmNyZWF0ZVNpZ25vdXRSZXF1ZXN0OiBObyBlbmQgc2Vzc2lvbiBlbmRwb2ludCB1cmwgcmV0dXJuZWRcIik7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJubyBlbmQgc2Vzc2lvbiBlbmRwb2ludFwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5jcmVhdGVTaWdub3V0UmVxdWVzdDogUmVjZWl2ZWQgZW5kIHNlc3Npb24gZW5kcG9pbnRcIiwgdXJsKTtcclxuXHJcbiAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFNpZ25vdXRSZXF1ZXN0KHtcclxuICAgICAgICAgICAgICAgIHVybCxcclxuICAgICAgICAgICAgICAgIGlkX3Rva2VuX2hpbnQsXHJcbiAgICAgICAgICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmksXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhIHx8IHN0YXRlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdmFyIHNpZ25vdXRTdGF0ZSA9IHJlcXVlc3Quc3RhdGU7XHJcbiAgICAgICAgICAgIGlmIChzaWdub3V0U3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQuY3JlYXRlU2lnbm91dFJlcXVlc3Q6IFNpZ25vdXQgcmVxdWVzdCBoYXMgc3RhdGUgdG8gcGVyc2lzdFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzdGF0ZVN0b3JlID0gc3RhdGVTdG9yZSB8fCB0aGlzLl9zdGF0ZVN0b3JlO1xyXG4gICAgICAgICAgICAgICAgc3RhdGVTdG9yZS5zZXQoc2lnbm91dFN0YXRlLmlkLCBzaWdub3V0U3RhdGUudG9TdG9yYWdlU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzU2lnbm91dFJlc3BvbnNlKHVybCwgc3RhdGVTdG9yZSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQucHJvY2Vzc1NpZ25vdXRSZXNwb25zZVwiKTtcclxuXHJcbiAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNpZ25vdXRSZXNwb25zZSh1cmwpO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3RhdGUpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbm91dFJlc3BvbnNlOiBObyBzdGF0ZSBpbiByZXNwb25zZVwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgTG9nLndhcm4oXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWdub3V0UmVzcG9uc2U6IFJlc3BvbnNlIHdhcyBlcnJvcjogXCIsIHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3JSZXNwb25zZShyZXNwb25zZSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBzdGF0ZUtleSA9IHJlc3BvbnNlLnN0YXRlO1xyXG5cclxuICAgICAgICBzdGF0ZVN0b3JlID0gc3RhdGVTdG9yZSB8fCB0aGlzLl9zdGF0ZVN0b3JlO1xyXG5cclxuICAgICAgICByZXR1cm4gc3RhdGVTdG9yZS5yZW1vdmUoc3RhdGVLZXkpLnRoZW4oc3RvcmVkU3RhdGVTdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXN0b3JlZFN0YXRlU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWdub3V0UmVzcG9uc2U6IE5vIG1hdGNoaW5nIHN0YXRlIGZvdW5kIGluIHN0b3JhZ2VcIik7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBtYXRjaGluZyBzdGF0ZSBmb3VuZCBpbiBzdG9yYWdlXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBTdGF0ZS5mcm9tU3RvcmFnZVN0cmluZyhzdG9yZWRTdGF0ZVN0cmluZyk7XHJcblxyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWdub3V0UmVzcG9uc2U6IFJlY2VpdmVkIHN0YXRlIGZyb20gc3RvcmFnZTsgdmFsaWRhdGluZyByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvci52YWxpZGF0ZVNpZ25vdXRSZXNwb25zZShzdGF0ZSwgcmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyU3RhbGVTdGF0ZShzdGF0ZVN0b3JlKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5jbGVhclN0YWxlU3RhdGVcIik7XHJcblxyXG4gICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XHJcblxyXG4gICAgICAgIHJldHVybiBTdGF0ZS5jbGVhclN0YWxlU3RhdGUoc3RhdGVTdG9yZSwgdGhpcy5zZXR0aW5ncy5zdGFsZVN0YXRlQWdlKTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9XZWJTdG9yYWdlU3RhdGVTdG9yZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlVmFsaWRhdG9yIH0gZnJvbSAnLi9SZXNwb25zZVZhbGlkYXRvcic7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4vTWV0YWRhdGFTZXJ2aWNlJztcclxuXHJcbmNvbnN0IE9pZGNNZXRhZGF0YVVybFBhdGggPSAnLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24nO1xyXG5cclxuY29uc3QgRGVmYXVsdFJlc3BvbnNlVHlwZSA9IFwiaWRfdG9rZW5cIjtcclxuY29uc3QgRGVmYXVsdFNjb3BlID0gXCJvcGVuaWRcIjtcclxuY29uc3QgRGVmYXVsdFN0YWxlU3RhdGVBZ2UgPSA2MCAqIDE1OyAvLyBzZWNvbmRzXHJcbmNvbnN0IERlZmF1bHRDbG9ja1NrZXdJblNlY29uZHMgPSA2MCAqIDU7XHJcblxyXG5leHBvcnQgY2xhc3MgT2lkY0NsaWVudFNldHRpbmdzIHtcclxuICAgIGNvbnN0cnVjdG9yKHtcclxuICAgICAgICAvLyBtZXRhZGF0YSByZWxhdGVkXHJcbiAgICAgICAgYXV0aG9yaXR5LCBtZXRhZGF0YVVybCwgbWV0YWRhdGEsIHNpZ25pbmdLZXlzLFxyXG4gICAgICAgIC8vIGNsaWVudCByZWxhdGVkXHJcbiAgICAgICAgY2xpZW50X2lkLCBjbGllbnRfc2VjcmV0LCByZXNwb25zZV90eXBlID0gRGVmYXVsdFJlc3BvbnNlVHlwZSwgc2NvcGUgPSBEZWZhdWx0U2NvcGUsXHJcbiAgICAgICAgcmVkaXJlY3RfdXJpLCBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmksXHJcbiAgICAgICAgLy8gb3B0aW9uYWwgcHJvdG9jb2xcclxuICAgICAgICBwcm9tcHQsIGRpc3BsYXksIG1heF9hZ2UsIHVpX2xvY2FsZXMsIGFjcl92YWx1ZXMsIHJlc291cmNlLCByZXNwb25zZV9tb2RlLFxyXG4gICAgICAgIC8vIGJlaGF2aW9yIGZsYWdzXHJcbiAgICAgICAgZmlsdGVyUHJvdG9jb2xDbGFpbXMgPSB0cnVlLCBsb2FkVXNlckluZm8gPSB0cnVlLFxyXG4gICAgICAgIHN0YWxlU3RhdGVBZ2UgPSBEZWZhdWx0U3RhbGVTdGF0ZUFnZSwgY2xvY2tTa2V3ID0gRGVmYXVsdENsb2NrU2tld0luU2Vjb25kcyxcclxuICAgICAgICAvLyBvdGhlciBiZWhhdmlvclxyXG4gICAgICAgIHN0YXRlU3RvcmUgPSBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoKSxcclxuICAgICAgICBSZXNwb25zZVZhbGlkYXRvckN0b3IgPSBSZXNwb25zZVZhbGlkYXRvcixcclxuICAgICAgICBNZXRhZGF0YVNlcnZpY2VDdG9yID0gTWV0YWRhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vIGV4dHJhIHF1ZXJ5IHBhcmFtc1xyXG4gICAgICAgIGV4dHJhUXVlcnlQYXJhbXMgPSB7fVxyXG4gICAgfSA9IHt9KSB7XHJcblxyXG4gICAgICAgIHRoaXMuX2F1dGhvcml0eSA9IGF1dGhvcml0eTtcclxuICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCA9IG1ldGFkYXRhVXJsO1xyXG4gICAgICAgIHRoaXMuX21ldGFkYXRhID0gbWV0YWRhdGE7XHJcbiAgICAgICAgdGhpcy5fc2lnbmluZ0tleXMgPSBzaWduaW5nS2V5cztcclxuXHJcbiAgICAgICAgdGhpcy5fY2xpZW50X2lkID0gY2xpZW50X2lkO1xyXG4gICAgICAgIHRoaXMuX2NsaWVudF9zZWNyZXQgPSBjbGllbnRfc2VjcmV0O1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlX3R5cGUgPSByZXNwb25zZV90eXBlO1xyXG4gICAgICAgIHRoaXMuX3Njb3BlID0gc2NvcGU7XHJcbiAgICAgICAgdGhpcy5fcmVkaXJlY3RfdXJpID0gcmVkaXJlY3RfdXJpO1xyXG4gICAgICAgIHRoaXMuX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSA9IHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvbXB0ID0gcHJvbXB0O1xyXG4gICAgICAgIHRoaXMuX2Rpc3BsYXkgPSBkaXNwbGF5O1xyXG4gICAgICAgIHRoaXMuX21heF9hZ2UgPSBtYXhfYWdlO1xyXG4gICAgICAgIHRoaXMuX3VpX2xvY2FsZXMgPSB1aV9sb2NhbGVzO1xyXG4gICAgICAgIHRoaXMuX2Fjcl92YWx1ZXMgPSBhY3JfdmFsdWVzO1xyXG4gICAgICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7XHJcbiAgICAgICAgdGhpcy5fcmVzcG9uc2VfbW9kZSA9IHJlc3BvbnNlX21vZGU7XHJcblxyXG4gICAgICAgIHRoaXMuX2ZpbHRlclByb3RvY29sQ2xhaW1zID0gISFmaWx0ZXJQcm90b2NvbENsYWltcztcclxuICAgICAgICB0aGlzLl9sb2FkVXNlckluZm8gPSAhIWxvYWRVc2VySW5mbztcclxuICAgICAgICB0aGlzLl9zdGFsZVN0YXRlQWdlID0gc3RhbGVTdGF0ZUFnZTtcclxuICAgICAgICB0aGlzLl9jbG9ja1NrZXcgPSBjbG9ja1NrZXc7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlO1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvciA9IG5ldyBSZXNwb25zZVZhbGlkYXRvckN0b3IodGhpcyk7XHJcbiAgICAgICAgdGhpcy5fbWV0YWRhdGFTZXJ2aWNlID0gbmV3IE1ldGFkYXRhU2VydmljZUN0b3IodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2V4dHJhUXVlcnlQYXJhbXMgPSB0eXBlb2YgZXh0cmFRdWVyeVBhcmFtcyA9PT0gJ29iamVjdCcgPyBleHRyYVF1ZXJ5UGFyYW1zIDoge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2xpZW50IGNvbmZpZ1xyXG4gICAgZ2V0IGNsaWVudF9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2xpZW50X2lkO1xyXG4gICAgfVxyXG4gICAgc2V0IGNsaWVudF9pZCh2YWx1ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5fY2xpZW50X2lkKSB7XHJcbiAgICAgICAgICAgIC8vIG9uZS10aW1lIHNldCBvbmx5XHJcbiAgICAgICAgICAgIHRoaXMuX2NsaWVudF9pZCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiT2lkY0NsaWVudFNldHRpbmdzLnNldF9jbGllbnRfaWQ6IGNsaWVudF9pZCBoYXMgYWxyZWFkeSBiZWVuIGFzc2lnbmVkLlwiKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjbGllbnRfaWQgaGFzIGFscmVhZHkgYmVlbiBhc3NpZ25lZC5cIilcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgY2xpZW50X3NlY3JldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2xpZW50X3NlY3JldDtcclxuICAgIH1cclxuICAgIGdldCByZXNwb25zZV90eXBlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZV90eXBlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHNjb3BlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zY29wZTtcclxuICAgIH1cclxuICAgIGdldCByZWRpcmVjdF91cmkoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZGlyZWN0X3VyaTtcclxuICAgIH1cclxuICAgIGdldCBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmkoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gb3B0aW9uYWwgcHJvdG9jb2wgcGFyYW1zXHJcbiAgICBnZXQgcHJvbXB0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQ7XHJcbiAgICB9XHJcbiAgICBnZXQgZGlzcGxheSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheTtcclxuICAgIH1cclxuICAgIGdldCBtYXhfYWdlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhfYWdlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHVpX2xvY2FsZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VpX2xvY2FsZXM7XHJcbiAgICB9XHJcbiAgICBnZXQgYWNyX3ZhbHVlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWNyX3ZhbHVlcztcclxuICAgIH1cclxuICAgIGdldCByZXNvdXJjZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7XHJcbiAgICB9XHJcbiAgICBnZXQgcmVzcG9uc2VfbW9kZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VfbW9kZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gbWV0YWRhdGFcclxuICAgIGdldCBhdXRob3JpdHkoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhvcml0eTtcclxuICAgIH1cclxuICAgIHNldCBhdXRob3JpdHkodmFsdWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAvLyBvbmUtdGltZSBzZXQgb25seVxyXG4gICAgICAgICAgICB0aGlzLl9hdXRob3JpdHkgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIk9pZGNDbGllbnRTZXR0aW5ncy5zZXRfYXV0aG9yaXR5OiBhdXRob3JpdHkgaGFzIGFscmVhZHkgYmVlbiBhc3NpZ25lZC5cIilcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXV0aG9yaXR5IGhhcyBhbHJlYWR5IGJlZW4gYXNzaWduZWQuXCIpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IG1ldGFkYXRhVXJsKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fbWV0YWRhdGFVcmwpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWV0YWRhdGFVcmwgPSB0aGlzLmF1dGhvcml0eTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9tZXRhZGF0YVVybCAmJiB0aGlzLl9tZXRhZGF0YVVybC5pbmRleE9mKE9pZGNNZXRhZGF0YVVybFBhdGgpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX21ldGFkYXRhVXJsW3RoaXMuX21ldGFkYXRhVXJsLmxlbmd0aCAtIDFdICE9PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCArPSAnLyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCArPSBPaWRjTWV0YWRhdGFVcmxQYXRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0dGFibGUvY2FjaGFibGUgbWV0YWRhdGEgdmFsdWVzXHJcbiAgICBnZXQgbWV0YWRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhO1xyXG4gICAgfVxyXG4gICAgc2V0IG1ldGFkYXRhKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fbWV0YWRhdGEgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2lnbmluZ0tleXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbmdLZXlzO1xyXG4gICAgfVxyXG4gICAgc2V0IHNpZ25pbmdLZXlzKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc2lnbmluZ0tleXMgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBiZWhhdmlvciBmbGFnc1xyXG4gICAgZ2V0IGZpbHRlclByb3RvY29sQ2xhaW1zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJQcm90b2NvbENsYWltcztcclxuICAgIH1cclxuICAgIGdldCBsb2FkVXNlckluZm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRVc2VySW5mbztcclxuICAgIH1cclxuICAgIGdldCBzdGFsZVN0YXRlQWdlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFsZVN0YXRlQWdlO1xyXG4gICAgfVxyXG4gICAgZ2V0IGNsb2NrU2tldygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2xvY2tTa2V3O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdGF0ZVN0b3JlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZVN0b3JlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbGlkYXRvcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yO1xyXG4gICAgfVxyXG4gICAgZ2V0IG1ldGFkYXRhU2VydmljZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGV4dHJhIHF1ZXJ5IHBhcmFtc1xyXG4gICAgZ2V0IGV4dHJhUXVlcnlQYXJhbXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhUXVlcnlQYXJhbXM7XHJcbiAgICB9XHJcbiAgICBzZXQgZXh0cmFRdWVyeVBhcmFtcyh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKXtcclxuICAgICAgICAgICAgdGhpcy5fZXh0cmFRdWVyeVBhcmFtcyA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2V4dHJhUXVlcnlQYXJhbXMgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBQb3B1cFdpbmRvdyB9IGZyb20gJy4vUG9wdXBXaW5kb3cnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwTmF2aWdhdG9yIHtcclxuXHJcbiAgICBwcmVwYXJlKHBhcmFtcykge1xyXG4gICAgICAgIGxldCBwb3B1cCA9IG5ldyBQb3B1cFdpbmRvdyhwYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9wdXApO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGxiYWNrKHVybCwga2VlcE9wZW4sIGRlbGltaXRlcikge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlBvcHVwTmF2aWdhdG9yLmNhbGxiYWNrXCIpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBQb3B1cFdpbmRvdy5ub3RpZnlPcGVuZXIodXJsLCBrZWVwT3BlbiwgZGVsaW1pdGVyKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHsgVXJsVXRpbGl0eSB9IGZyb20gJy4vVXJsVXRpbGl0eSc7XHJcblxyXG5jb25zdCBDaGVja0ZvclBvcHVwQ2xvc2VkSW50ZXJ2YWwgPSA1MDA7XHJcbmNvbnN0IERlZmF1bHRQb3B1cEZlYXR1cmVzID0gJ2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sd2lkdGg9NTAwLGhlaWdodD01MDAsbGVmdD0xMDAsdG9wPTEwMDsnO1xyXG4vL2NvbnN0IERlZmF1bHRQb3B1cEZlYXR1cmVzID0gJ2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sd2lkdGg9NTAwLGhlaWdodD01MDAsbGVmdD0xMDAsdG9wPTEwMDtyZXNpemFibGU9eWVzJztcclxuXHJcbmNvbnN0IERlZmF1bHRQb3B1cFRhcmdldCA9IFwiX2JsYW5rXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUG9wdXBXaW5kb3cge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xyXG4gICAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xyXG4gICAgICAgICAgICB0aGlzLl9yZWplY3QgPSByZWplY3Q7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCB0YXJnZXQgPSBwYXJhbXMucG9wdXBXaW5kb3dUYXJnZXQgfHwgRGVmYXVsdFBvcHVwVGFyZ2V0O1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IHBhcmFtcy5wb3B1cFdpbmRvd0ZlYXR1cmVzIHx8IERlZmF1bHRQb3B1cEZlYXR1cmVzO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCB0YXJnZXQsIGZlYXR1cmVzKTtcclxuICAgICAgICBpZiAodGhpcy5fcG9wdXApIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY3RvcjogcG9wdXAgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUG9wdXBDbG9zZWRUaW1lciA9IHdpbmRvdy5zZXRJbnRlcnZhbCh0aGlzLl9jaGVja0ZvclBvcHVwQ2xvc2VkLmJpbmQodGhpcyksIENoZWNrRm9yUG9wdXBDbG9zZWRJbnRlcnZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBwcm9taXNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlKHBhcmFtcykge1xyXG4gICAgICAgIGlmICghdGhpcy5fcG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJQb3B1cFdpbmRvdy5uYXZpZ2F0ZTogRXJyb3Igb3BlbmluZyBwb3B1cCB3aW5kb3dcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJQb3B1cFdpbmRvdy5uYXZpZ2F0ZTogbm8gdXJsIHByb3ZpZGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcihcIk5vIHVybCBwcm92aWRlZFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlBvcHVwV2luZG93Lm5hdmlnYXRlOiBTZXR0aW5nIFVSTCBpbiBwb3B1cFwiKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2lkID0gcGFyYW1zLmlkO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faWQpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvd1tcInBvcHVwQ2FsbGJhY2tfXCIgKyBwYXJhbXMuaWRdID0gdGhpcy5fY2FsbGJhY2suYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAuZm9jdXMoKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9wdXAud2luZG93LmxvY2F0aW9uID0gcGFyYW1zLnVybDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgX3N1Y2Nlc3MoZGF0YSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlBvcHVwV2luZG93LmNhbGxiYWNrOiBTdWNjZXNzZnVsIHJlc3BvbnNlIGZyb20gcG9wdXAgd2luZG93XCIpO1xyXG5cclxuICAgICAgICB0aGlzLl9jbGVhbnVwKCk7XHJcbiAgICAgICAgdGhpcy5fcmVzb2x2ZShkYXRhKTtcclxuICAgIH1cclxuICAgIF9lcnJvcihtZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nLmVycm9yKFwiUG9wdXBXaW5kb3cuZXJyb3I6IFwiLCBtZXNzYWdlKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9jbGVhbnVwKCk7XHJcbiAgICAgICAgdGhpcy5fcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5fY2xlYW51cChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NsZWFudXAoa2VlcE9wZW4pIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJQb3B1cFdpbmRvdy5jbGVhbnVwXCIpO1xyXG5cclxuICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9jaGVja0ZvclBvcHVwQ2xvc2VkVGltZXIpO1xyXG4gICAgICAgIHRoaXMuX2NoZWNrRm9yUG9wdXBDbG9zZWRUaW1lciA9IG51bGw7XHJcblxyXG4gICAgICAgIGRlbGV0ZSB3aW5kb3dbXCJwb3B1cENhbGxiYWNrX1wiICsgdGhpcy5faWRdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fcG9wdXAgJiYgIWtlZXBPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3BvcHVwID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBfY2hlY2tGb3JQb3B1cENsb3NlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3BvcHVwIHx8IHRoaXMuX3BvcHVwLmNsb3NlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcihcIlBvcHVwIHdpbmRvdyBjbG9zZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9jYWxsYmFjayh1cmwsIGtlZXBPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5fY2xlYW51cChrZWVwT3Blbik7XHJcblxyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY2FsbGJhY2sgc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgdGhpcy5fc3VjY2Vzcyh7IHVybDogdXJsIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY2FsbGJhY2s6IEludmFsaWQgcmVzcG9uc2UgZnJvbSBwb3B1cFwiKTtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJJbnZhbGlkIHJlc3BvbnNlIGZyb20gcG9wdXBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBub3RpZnlPcGVuZXIodXJsLCBrZWVwT3BlbiwgZGVsaW1pdGVyKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5vcGVuZXIpIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IFVybFV0aWxpdHkucGFyc2VVcmxGcmFnbWVudCh1cmwsIGRlbGltaXRlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFwicG9wdXBDYWxsYmFja19cIiArIGRhdGEuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gd2luZG93Lm9wZW5lcltuYW1lXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cubm90aWZ5T3BlbmVyOiBwYXNzaW5nIHVybCBtZXNzYWdlIHRvIG9wZW5lclwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodXJsLCBrZWVwT3Blbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2cud2FybihcIlBvcHVwV2luZG93Lm5vdGlmeU9wZW5lcjogbm8gbWF0Y2hpbmcgY2FsbGJhY2sgZm91bmQgb24gb3BlbmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiUG9wdXBXaW5kb3cubm90aWZ5T3BlbmVyOiBubyBzdGF0ZSBmb3VuZCBpbiByZXNwb25zZSB1cmxcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIExvZy53YXJuKFwiUG9wdXBXaW5kb3cubm90aWZ5T3BlbmVyOiBubyB3aW5kb3cub3BlbmVyLiBDYW4ndCBjb21wbGV0ZSBub3RpZmljYXRpb24uXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmVkaXJlY3ROYXZpZ2F0b3Ige1xyXG5cclxuICAgIHByZXBhcmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBuYXZpZ2F0ZShwYXJhbXMpIHtcclxuICAgICAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLnVybCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZWRpcmVjdE5hdmlnYXRvci5uYXZpZ2F0ZTogTm8gdXJsIHByb3ZpZGVkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gdXJsIHByb3ZpZGVkXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHBhcmFtcy51cmw7XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXJsKCkge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4vTWV0YWRhdGFTZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckluZm9TZXJ2aWNlIH0gZnJvbSAnLi9Vc2VySW5mb1NlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2tlbkNsaWVudCB9IGZyb20gJy4vVG9rZW5DbGllbnQnO1xyXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi9FcnJvclJlc3BvbnNlJztcclxuaW1wb3J0IHsgSm9zZVV0aWwgfSBmcm9tICcuL0pvc2VVdGlsJztcclxuXHJcbmNvbnN0IFByb3RvY29sQ2xhaW1zID0gW1wibm9uY2VcIiwgXCJhdF9oYXNoXCIsIFwiaWF0XCIsIFwibmJmXCIsIFwiZXhwXCIsIFwiYXVkXCIsIFwiaXNzXCIsIFwiY19oYXNoXCJdO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlVmFsaWRhdG9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncywgXHJcbiAgICAgICAgTWV0YWRhdGFTZXJ2aWNlQ3RvciA9IE1ldGFkYXRhU2VydmljZSxcclxuICAgICAgICBVc2VySW5mb1NlcnZpY2VDdG9yID0gVXNlckluZm9TZXJ2aWNlLCBcclxuICAgICAgICBqb3NlVXRpbCA9IEpvc2VVdGlsLFxyXG4gICAgICAgIFRva2VuQ2xpZW50Q3RvciA9IFRva2VuQ2xpZW50KSB7XHJcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5jdG9yOiBObyBzZXR0aW5ncyBwYXNzZWQgdG8gUmVzcG9uc2VWYWxpZGF0b3JcIik7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNldHRpbmdzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UgPSBuZXcgTWV0YWRhdGFTZXJ2aWNlQ3Rvcih0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5fdXNlckluZm9TZXJ2aWNlID0gbmV3IFVzZXJJbmZvU2VydmljZUN0b3IodGhpcy5fc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuX2pvc2VVdGlsID0gam9zZVV0aWw7XHJcbiAgICAgICAgdGhpcy5fdG9rZW5DbGllbnQgPSBuZXcgVG9rZW5DbGllbnRDdG9yKHRoaXMuX3NldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZVNpZ25pblJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLnZhbGlkYXRlU2lnbmluUmVzcG9uc2VcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU2lnbmluUGFyYW1zKHN0YXRlLCByZXNwb25zZSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLnZhbGlkYXRlU2lnbmluUmVzcG9uc2U6IHN0YXRlIHByb2Nlc3NlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlVG9rZW5zKHN0YXRlLCByZXNwb25zZSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25pblJlc3BvbnNlOiB0b2tlbnMgdmFsaWRhdGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NDbGFpbXMocmVzcG9uc2UpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLnZhbGlkYXRlU2lnbmluUmVzcG9uc2U6IGNsYWltcyBwcm9jZXNzZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlU2lnbm91dFJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSkge1xyXG4gICAgICAgIGlmIChzdGF0ZS5pZCAhPT0gcmVzcG9uc2Uuc3RhdGUpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IudmFsaWRhdGVTaWdub3V0UmVzcG9uc2U6IFN0YXRlIGRvZXMgbm90IG1hdGNoXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiU3RhdGUgZG9lcyBub3QgbWF0Y2hcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbm93IHRoYXQgd2Uga25vdyB0aGUgc3RhdGUgbWF0Y2hlcywgdGFrZSB0aGUgc3RvcmVkIGRhdGFcclxuICAgICAgICAvLyBhbmQgc2V0IGl0IGludG8gdGhlIHJlc3BvbnNlIHNvIGNhbGxlcnMgY2FuIGdldCB0aGVpciBzdGF0ZVxyXG4gICAgICAgIC8vIHRoaXMgaXMgaW1wb3J0YW50IGZvciBib3RoIHN1Y2Nlc3MgJiBlcnJvciBvdXRjb21lc1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLnZhbGlkYXRlU2lnbm91dFJlc3BvbnNlOiBzdGF0ZSB2YWxpZGF0ZWRcIik7XHJcbiAgICAgICAgcmVzcG9uc2Uuc3RhdGUgPSBzdGF0ZS5kYXRhO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcclxuICAgICAgICAgICAgTG9nLndhcm4oXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25vdXRSZXNwb25zZTogUmVzcG9uc2Ugd2FzIGVycm9yXCIsIHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvclJlc3BvbnNlKHJlc3BvbnNlKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICBfcHJvY2Vzc1NpZ25pblBhcmFtcyhzdGF0ZSwgcmVzcG9uc2UpIHtcclxuICAgICAgICBpZiAoc3RhdGUuaWQgIT09IHJlc3BvbnNlLnN0YXRlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBTdGF0ZSBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlN0YXRlIGRvZXMgbm90IG1hdGNoXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghc3RhdGUuY2xpZW50X2lkKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBObyBjbGllbnRfaWQgb24gc3RhdGVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBjbGllbnRfaWQgb24gc3RhdGVcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFzdGF0ZS5hdXRob3JpdHkpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IE5vIGF1dGhvcml0eSBvbiBzdGF0ZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGF1dGhvcml0eSBvbiBzdGF0ZVwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzIGFsbG93cyB0aGUgYXV0aG9yaXR5IHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBzaWduaW4gc3RhdGVcclxuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLmF1dGhvcml0eSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHkgPSBzdGF0ZS5hdXRob3JpdHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVuc3VyZSB3ZSdyZSB1c2luZyB0aGUgY29ycmVjdCBhdXRob3JpdHkgaWYgdGhlIGF1dGhvcml0eSBpcyBub3QgbG9hZGVkIGZyb20gc2lnbmluIHN0YXRlXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fc2V0dGluZ3MuYXV0aG9yaXR5ICYmIHRoaXMuX3NldHRpbmdzLmF1dGhvcml0eSAhPT0gc3RhdGUuYXV0aG9yaXR5KSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBhdXRob3JpdHkgbWlzbWF0Y2ggb24gc2V0dGluZ3MgdnMuIHNpZ25pbiBzdGF0ZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImF1dGhvcml0eSBtaXNtYXRjaCBvbiBzZXR0aW5ncyB2cy4gc2lnbmluIHN0YXRlXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcyBhbGxvd3MgdGhlIGNsaWVudF9pZCB0byBiZSBsb2FkZWQgZnJvbSB0aGUgc2lnbmluIHN0YXRlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkID0gc3RhdGUuY2xpZW50X2lkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbnN1cmUgd2UncmUgdXNpbmcgdGhlIGNvcnJlY3QgY2xpZW50X2lkIGlmIHRoZSBjbGllbnRfaWQgaXMgbm90IGxvYWRlZCBmcm9tIHNpZ25pbiBzdGF0ZVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuX3NldHRpbmdzLmNsaWVudF9pZCAmJiB0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQgIT09IHN0YXRlLmNsaWVudF9pZCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc1NpZ25pblBhcmFtczogY2xpZW50X2lkIG1pc21hdGNoIG9uIHNldHRpbmdzIHZzLiBzaWduaW4gc3RhdGVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJjbGllbnRfaWQgbWlzbWF0Y2ggb24gc2V0dGluZ3MgdnMuIHNpZ25pbiBzdGF0ZVwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBub3cgdGhhdCB3ZSBrbm93IHRoZSBzdGF0ZSBtYXRjaGVzLCB0YWtlIHRoZSBzdG9yZWQgZGF0YVxyXG4gICAgICAgIC8vIGFuZCBzZXQgaXQgaW50byB0aGUgcmVzcG9uc2Ugc28gY2FsbGVycyBjYW4gZ2V0IHRoZWlyIHN0YXRlXHJcbiAgICAgICAgLy8gdGhpcyBpcyBpbXBvcnRhbnQgZm9yIGJvdGggc3VjY2VzcyAmIGVycm9yIG91dGNvbWVzXHJcbiAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IHN0YXRlIHZhbGlkYXRlZFwiKTtcclxuICAgICAgICByZXNwb25zZS5zdGF0ZSA9IHN0YXRlLmRhdGE7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xyXG4gICAgICAgICAgICBMb2cud2FybihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBSZXNwb25zZSB3YXMgZXJyb3JcIiwgcmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yUmVzcG9uc2UocmVzcG9uc2UpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZS5ub25jZSAmJiAhcmVzcG9uc2UuaWRfdG9rZW4pIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IEV4cGVjdGluZyBpZF90b2tlbiBpbiByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGlkX3Rva2VuIGluIHJlc3BvbnNlXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghc3RhdGUubm9uY2UgJiYgcmVzcG9uc2UuaWRfdG9rZW4pIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IE5vdCBleHBlY3RpbmcgaWRfdG9rZW4gaW4gcmVzcG9uc2VcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGlkX3Rva2VuIGluIHJlc3BvbnNlXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdGF0ZS5jb2RlX3ZlcmlmaWVyICYmICFyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBFeHBlY3RpbmcgY29kZSBpbiByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGNvZGUgaW4gcmVzcG9uc2VcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFzdGF0ZS5jb2RlX3ZlcmlmaWVyICYmIHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IE5vdCBleHBlY3RpbmcgY29kZSBpbiByZXNwb25zZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgY29kZSBpbiByZXNwb25zZVwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICBfcHJvY2Vzc0NsYWltcyhyZXNwb25zZSkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5pc09wZW5JZENvbm5lY3QpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NDbGFpbXM6IHJlc3BvbnNlIGlzIE9JREMsIHByb2Nlc3NpbmcgY2xhaW1zXCIpO1xyXG5cclxuICAgICAgICAgICAgcmVzcG9uc2UucHJvZmlsZSA9IHRoaXMuX2ZpbHRlclByb3RvY29sQ2xhaW1zKHJlc3BvbnNlLnByb2ZpbGUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmxvYWRVc2VySW5mbyAmJiByZXNwb25zZS5hY2Nlc3NfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiBsb2FkaW5nIHVzZXIgaW5mb1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlckluZm9TZXJ2aWNlLmdldENsYWltcyhyZXNwb25zZS5hY2Nlc3NfdG9rZW4pLnRoZW4oY2xhaW1zID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc0NsYWltczogdXNlciBpbmZvIGNsYWltcyByZWNlaXZlZCBmcm9tIHVzZXIgaW5mbyBlbmRwb2ludFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsYWltcy5zdWIgIT09IHJlc3BvbnNlLnByb2ZpbGUuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiBzdWIgZnJvbSB1c2VyIGluZm8gZW5kcG9pbnQgZG9lcyBub3QgbWF0Y2ggc3ViIGluIGFjY2Vzc190b2tlblwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcInN1YiBmcm9tIHVzZXIgaW5mbyBlbmRwb2ludCBkb2VzIG5vdCBtYXRjaCBzdWIgaW4gYWNjZXNzX3Rva2VuXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnByb2ZpbGUgPSB0aGlzLl9tZXJnZUNsYWltcyhyZXNwb25zZS5wcm9maWxlLCBjbGFpbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiB1c2VyIGluZm8gY2xhaW1zIHJlY2VpdmVkLCB1cGRhdGVkIHByb2ZpbGU6XCIsIHJlc3BvbnNlLnByb2ZpbGUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiBub3QgbG9hZGluZyB1c2VyIGluZm9cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiByZXNwb25zZSBpcyBub3QgT0lEQywgbm90IHByb2Nlc3NpbmcgY2xhaW1zXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX21lcmdlQ2xhaW1zKGNsYWltczEsIGNsYWltczIpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgY2xhaW1zMSk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gY2xhaW1zMikge1xyXG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gY2xhaW1zMltuYW1lXTtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlcyA9IFt2YWx1ZXNdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0W25hbWVdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbbmFtZV0uaW5kZXhPZih2YWx1ZSkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXS5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHRbbmFtZV0gIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gW3Jlc3VsdFtuYW1lXSwgdmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIF9maWx0ZXJQcm90b2NvbENsYWltcyhjbGFpbXMpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fZmlsdGVyUHJvdG9jb2xDbGFpbXMsIGluY29taW5nIGNsYWltczpcIiwgY2xhaW1zKTtcclxuXHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIGNsYWltcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5fZmlsdGVyUHJvdG9jb2xDbGFpbXMpIHtcclxuICAgICAgICAgICAgUHJvdG9jb2xDbGFpbXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHRbdHlwZV07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX2ZpbHRlclByb3RvY29sQ2xhaW1zOiBwcm90b2NvbCBjbGFpbXMgZmlsdGVyZWRcIiwgcmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9maWx0ZXJQcm90b2NvbENsYWltczogcHJvdG9jb2wgY2xhaW1zIG5vdCBmaWx0ZXJlZFwiKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBfdmFsaWRhdGVUb2tlbnMoc3RhdGUsIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlVG9rZW5zOiBWYWxpZGF0aW5nIGNvZGVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzQ29kZShzdGF0ZSwgcmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmlkX3Rva2VuKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5hY2Nlc3NfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZVRva2VuczogVmFsaWRhdGluZyBpZF90b2tlbiBhbmQgYWNjZXNzX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlSWRUb2tlbkFuZEFjY2Vzc1Rva2VuKHN0YXRlLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZVRva2VuczogVmFsaWRhdGluZyBpZF90b2tlblwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlSWRUb2tlbihzdGF0ZSwgcmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlVG9rZW5zOiBObyBjb2RlIHRvIHByb2Nlc3Mgb3IgaWRfdG9rZW4gdG8gdmFsaWRhdGVcIik7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3Byb2Nlc3NDb2RlKHN0YXRlLCByZXNwb25zZSkge1xyXG4gICAgICAgIHZhciByZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICBjbGllbnRfaWQ6IHN0YXRlLmNsaWVudF9pZCxcclxuICAgICAgICAgICAgY2xpZW50X3NlY3JldDogdGhpcy5fc2V0dGluZ3MuY2xpZW50X3NlY3JldCxcclxuICAgICAgICAgICAgY29kZSA6IHJlc3BvbnNlLmNvZGUsXHJcbiAgICAgICAgICAgIHJlZGlyZWN0X3VyaTogc3RhdGUucmVkaXJlY3RfdXJpLFxyXG4gICAgICAgICAgICBjb2RlX3ZlcmlmaWVyOiBzdGF0ZS5jb2RlX3ZlcmlmaWVyLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuQ2xpZW50LmV4Y2hhbmdlQ29kZShyZXF1ZXN0KS50aGVuKHRva2VuUmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gdG9rZW5SZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Vba2V5XSA9IHRva2VuUmVzcG9uc2Vba2V5XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlkX3Rva2VuKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc0NvZGU6IHRva2VuIHJlc3BvbnNlIHN1Y2Nlc3NmdWwsIHByb2Nlc3NpbmcgaWRfdG9rZW5cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVJZFRva2VuQXR0cmlidXRlcyhzdGF0ZSwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NDb2RlOiB0b2tlbiByZXNwb25zZSBzdWNjZXNzZnVsLCByZXR1cm5pbmcgcmVzcG9uc2VcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfdmFsaWRhdGVJZFRva2VuQXR0cmlidXRlcyhzdGF0ZSwgcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlLmdldElzc3VlcigpLnRoZW4oaXNzdWVyID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBhdWRpZW5jZSA9IHN0YXRlLmNsaWVudF9pZDtcclxuICAgICAgICAgICAgbGV0IGNsb2NrU2tld0luU2Vjb25kcyA9IHRoaXMuX3NldHRpbmdzLmNsb2NrU2tldztcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXM6IFZhbGlkYWluZyBKV1QgYXR0cmlidXRlczsgdXNpbmcgY2xvY2sgc2tldyAoaW4gc2Vjb25kcykgb2Y6IFwiLCBjbG9ja1NrZXdJblNlY29uZHMpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pvc2VVdGlsLnZhbGlkYXRlSnd0QXR0cmlidXRlcyhyZXNwb25zZS5pZF90b2tlbiwgaXNzdWVyLCBhdWRpZW5jZSwgY2xvY2tTa2V3SW5TZWNvbmRzKS50aGVuKHBheWxvYWQgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5ub25jZSAmJiBzdGF0ZS5ub25jZSAhPT0gcGF5bG9hZC5ub25jZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW5BdHRyaWJ1dGVzOiBJbnZhbGlkIG5vbmNlIGluIGlkX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJJbnZhbGlkIG5vbmNlIGluIGlkX3Rva2VuXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWQuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXM6IE5vIHN1YiBwcmVzZW50IGluIGlkX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBzdWIgcHJlc2VudCBpbiBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucHJvZmlsZSA9IHBheWxvYWQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF92YWxpZGF0ZUlkVG9rZW5BbmRBY2Nlc3NUb2tlbihzdGF0ZSwgcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVJZFRva2VuKHN0YXRlLCByZXNwb25zZSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZUFjY2Vzc1Rva2VuKHJlc3BvbnNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfdmFsaWRhdGVJZFRva2VuKHN0YXRlLCByZXNwb25zZSkge1xyXG4gICAgICAgIGlmICghc3RhdGUubm9uY2UpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogTm8gbm9uY2Ugb24gc3RhdGVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBub25jZSBvbiBzdGF0ZVwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgand0ID0gdGhpcy5fam9zZVV0aWwucGFyc2VKd3QocmVzcG9uc2UuaWRfdG9rZW4pO1xyXG4gICAgICAgIGlmICghand0IHx8ICFqd3QuaGVhZGVyIHx8ICFqd3QucGF5bG9hZCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBGYWlsZWQgdG8gcGFyc2UgaWRfdG9rZW5cIiwgand0KTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RhdGUubm9uY2UgIT09IGp3dC5wYXlsb2FkLm5vbmNlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IEludmFsaWQgbm9uY2UgaW4gaWRfdG9rZW5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJJbnZhbGlkIG5vbmNlIGluIGlkX3Rva2VuXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBraWQgPSBqd3QuaGVhZGVyLmtpZDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRJc3N1ZXIoKS50aGVuKGlzc3VlciA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IFJlY2VpdmVkIGlzc3VlclwiKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0U2lnbmluZ0tleXMoKS50aGVuKGtleXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFrZXlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogTm8gc2lnbmluZyBrZXlzIGZyb20gbWV0YWRhdGFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHNpZ25pbmcga2V5cyBmcm9tIG1ldGFkYXRhXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBSZWNlaXZlZCBzaWduaW5nIGtleXNcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5O1xyXG4gICAgICAgICAgICAgICAgaWYgKCFraWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXlzID0gdGhpcy5fZmlsdGVyQnlBbGcoa2V5cywgand0LmhlYWRlci5hbGcpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IE5vIGtpZCBmb3VuZCBpbiBpZF90b2tlbiBhbmQgbW9yZSB0aGFuIG9uZSBrZXkgZm91bmQgaW4gbWV0YWRhdGFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBraWQgZm91bmQgaW4gaWRfdG9rZW4gYW5kIG1vcmUgdGhhbiBvbmUga2V5IGZvdW5kIGluIG1ldGFkYXRhXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpZCBpcyBtYW5kYXRvcnkgb25seSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBrZXlzIGluIHRoZSByZWZlcmVuY2VkIEpXSyBTZXQgZG9jdW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VlIGh0dHA6Ly9vcGVuaWQubmV0L3NwZWNzL29wZW5pZC1jb25uZWN0LWNvcmUtMV8wLmh0bWwjU2lnbmluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IGtleXMuZmlsdGVyKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkua2lkID09PSBraWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlbMF07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBObyBrZXkgbWF0Y2hpbmcga2lkIG9yIGFsZyBmb3VuZCBpbiBzaWduaW5nIGtleXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGtleSBtYXRjaGluZyBraWQgb3IgYWxnIGZvdW5kIGluIHNpZ25pbmcga2V5c1wiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGllbmNlID0gc3RhdGUuY2xpZW50X2lkO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjbG9ja1NrZXdJblNlY29uZHMgPSB0aGlzLl9zZXR0aW5ncy5jbG9ja1NrZXc7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBWYWxpZGFpbmcgSldUOyB1c2luZyBjbG9jayBza2V3IChpbiBzZWNvbmRzKSBvZjogXCIsIGNsb2NrU2tld0luU2Vjb25kcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pvc2VVdGlsLnZhbGlkYXRlSnd0KHJlc3BvbnNlLmlkX3Rva2VuLCBrZXksIGlzc3VlciwgYXVkaWVuY2UsIGNsb2NrU2tld0luU2Vjb25kcykudGhlbigoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IEpXVCB2YWxpZGF0aW9uIHN1Y2Nlc3NmdWxcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghand0LnBheWxvYWQuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IE5vIHN1YiBwcmVzZW50IGluIGlkX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gc3ViIHByZXNlbnQgaW4gaWRfdG9rZW5cIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucHJvZmlsZSA9IGp3dC5wYXlsb2FkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2ZpbHRlckJ5QWxnKGtleXMsIGFsZyl7XHJcbiAgICAgICAgdmFyIGt0eSA9IG51bGw7XHJcbiAgICAgICAgaWYgKGFsZy5zdGFydHNXaXRoKFwiUlNcIikpIHtcclxuICAgICAgICAgICAga3R5ID0gXCJSU0FcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYWxnLnN0YXJ0c1dpdGgoXCJQU1wiKSkge1xyXG4gICAgICAgICAgICBrdHkgPSBcIlBTXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFsZy5zdGFydHNXaXRoKFwiRVNcIikpIHtcclxuICAgICAgICAgICAga3R5ID0gXCJFQ1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX2ZpbHRlckJ5QWxnOiBhbGcgbm90IHN1cHBvcnRlZDogXCIsIGFsZyk7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9maWx0ZXJCeUFsZzogTG9va2luZyBmb3Iga2V5cyB0aGF0IG1hdGNoIGt0eTogXCIsIGt0eSk7XHJcblxyXG4gICAgICAgIGtleXMgPSBrZXlzLmZpbHRlcihrZXkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5Lmt0eSA9PT0ga3R5O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fZmlsdGVyQnlBbGc6IE51bWJlciBvZiBrZXlzIHRoYXQgbWF0Y2gga3R5OiBcIiwga3R5LCBrZXlzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHJldHVybiBrZXlzO1xyXG4gICAgfVxyXG5cclxuICAgIF92YWxpZGF0ZUFjY2Vzc1Rva2VuKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZS5wcm9maWxlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBObyBwcm9maWxlIGxvYWRlZCBmcm9tIGlkX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gcHJvZmlsZSBsb2FkZWQgZnJvbSBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXJlc3BvbnNlLnByb2ZpbGUuYXRfaGFzaCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogTm8gYXRfaGFzaCBpbiBpZF90b2tlblwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGF0X2hhc2ggaW4gaWRfdG9rZW5cIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZS5pZF90b2tlbikge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogTm8gaWRfdG9rZW5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgand0ID0gdGhpcy5fam9zZVV0aWwucGFyc2VKd3QocmVzcG9uc2UuaWRfdG9rZW4pO1xyXG4gICAgICAgIGlmICghand0IHx8ICFqd3QuaGVhZGVyKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBGYWlsZWQgdG8gcGFyc2UgaWRfdG9rZW5cIiwgand0KTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgaGFzaEFsZyA9IGp3dC5oZWFkZXIuYWxnO1xyXG4gICAgICAgIGlmICghaGFzaEFsZyB8fCBoYXNoQWxnLmxlbmd0aCAhPT0gNSkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogVW5zdXBwb3J0ZWQgYWxnOlwiLCBoYXNoQWxnKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGFsZzogXCIgKyBoYXNoQWxnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgaGFzaEJpdHMgPSBoYXNoQWxnLnN1YnN0cigyLCAzKTtcclxuICAgICAgICBpZiAoIWhhc2hCaXRzKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBVbnN1cHBvcnRlZCBhbGc6XCIsIGhhc2hBbGcsIGhhc2hCaXRzKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGFsZzogXCIgKyBoYXNoQWxnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoYXNoQml0cyA9IHBhcnNlSW50KGhhc2hCaXRzKTtcclxuICAgICAgICBpZiAoaGFzaEJpdHMgIT09IDI1NiAmJiBoYXNoQml0cyAhPT0gMzg0ICYmIGhhc2hCaXRzICE9PSA1MTIpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlQWNjZXNzVG9rZW46IFVuc3VwcG9ydGVkIGFsZzpcIiwgaGFzaEFsZywgaGFzaEJpdHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgYWxnOiBcIiArIGhhc2hBbGcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzaGEgPSBcInNoYVwiICsgaGFzaEJpdHM7XHJcbiAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9qb3NlVXRpbC5oYXNoU3RyaW5nKHJlc3BvbnNlLmFjY2Vzc190b2tlbiwgc2hhKTtcclxuICAgICAgICBpZiAoIWhhc2gpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlQWNjZXNzVG9rZW46IGFjY2Vzc190b2tlbiBoYXNoIGZhaWxlZDpcIiwgc2hhKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byB2YWxpZGF0ZSBhdF9oYXNoXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBsZWZ0ID0gaGFzaC5zdWJzdHIoMCwgaGFzaC5sZW5ndGggLyAyKTtcclxuICAgICAgICB2YXIgbGVmdF9iNjR1ID0gdGhpcy5fam9zZVV0aWwuaGV4VG9CYXNlNjRVcmwobGVmdCk7XHJcbiAgICAgICAgaWYgKGxlZnRfYjY0dSAhPT0gcmVzcG9uc2UucHJvZmlsZS5hdF9oYXNoKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBGYWlsZWQgdG8gdmFsaWRhdGUgYXRfaGFzaFwiLCBsZWZ0X2I2NHUsIHJlc3BvbnNlLnByb2ZpbGUuYXRfaGFzaCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGYWlsZWQgdG8gdmFsaWRhdGUgYXRfaGFzaFwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogc3VjY2Vzc1wiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBDaGVja1Nlc3Npb25JRnJhbWUgfSBmcm9tICcuL0NoZWNrU2Vzc2lvbklGcmFtZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1vbml0b3Ige1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHVzZXJNYW5hZ2VyLCBDaGVja1Nlc3Npb25JRnJhbWVDdG9yID0gQ2hlY2tTZXNzaW9uSUZyYW1lKSB7XHJcbiAgICAgICAgaWYgKCF1c2VyTWFuYWdlcikge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTZXNzaW9uTW9uaXRvci5jdG9yOiBObyB1c2VyIG1hbmFnZXIgcGFzc2VkIHRvIFNlc3Npb25Nb25pdG9yXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VyTWFuYWdlclwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyID0gdXNlck1hbmFnZXI7XHJcbiAgICAgICAgdGhpcy5fQ2hlY2tTZXNzaW9uSUZyYW1lQ3RvciA9IENoZWNrU2Vzc2lvbklGcmFtZUN0b3I7XHJcblxyXG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5hZGRVc2VyTG9hZGVkKHRoaXMuX3N0YXJ0LmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5hZGRVc2VyVW5sb2FkZWQodGhpcy5fc3RvcC5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZ2V0VXNlcigpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgIC8vIGRvaW5nIHRoaXMgbWFudWFsbHkgaGVyZSBzaW5jZSBjYWxsaW5nIGdldFVzZXIgXHJcbiAgICAgICAgICAgIC8vIGRvZXNuJ3QgdHJpZ2dlciBsb2FkIGV2ZW50LlxyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQodXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAvLyBjYXRjaCB0byBzdXBwcmVzcyBlcnJvcnMgc2luY2Ugd2UncmUgaW4gYSBjdG9yXHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNlc3Npb25Nb25pdG9yIGN0b3I6IGVycm9yIGZyb20gZ2V0VXNlcjpcIiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBfc2V0dGluZ3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJNYW5hZ2VyLnNldHRpbmdzO1xyXG4gICAgfVxyXG4gICAgZ2V0IF9tZXRhZGF0YVNlcnZpY2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJNYW5hZ2VyLm1ldGFkYXRhU2VydmljZTtcclxuICAgIH1cclxuICAgIGdldCBfY2xpZW50X2lkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQ7XHJcbiAgICB9XHJcbiAgICBnZXQgX2NoZWNrU2Vzc2lvbkludGVydmFsKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncy5jaGVja1Nlc3Npb25JbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGdldCBfc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzLnN0b3BDaGVja1Nlc3Npb25PbkVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIF9zdGFydCh1c2VyKSB7XHJcbiAgICAgICAgbGV0IHNlc3Npb25fc3RhdGUgPSB1c2VyLnNlc3Npb25fc3RhdGU7XHJcblxyXG4gICAgICAgIGlmIChzZXNzaW9uX3N0YXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3N1YiA9IHVzZXIucHJvZmlsZS5zdWI7XHJcbiAgICAgICAgICAgIHRoaXMuX3NpZCA9IHVzZXIucHJvZmlsZS5zaWQ7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9zdGFydDogc2Vzc2lvbl9zdGF0ZTpcIiwgc2Vzc2lvbl9zdGF0ZSwgXCIsIHN1YjpcIiwgdGhpcy5fc3ViKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fY2hlY2tTZXNzaW9uSUZyYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0Q2hlY2tTZXNzaW9uSWZyYW1lKCkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX3N0YXJ0OiBJbml0aWFsaXppbmcgY2hlY2sgc2Vzc2lvbiBpZnJhbWVcIilcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbGllbnRfaWQgPSB0aGlzLl9jbGllbnRfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuX2NoZWNrU2Vzc2lvbkludGVydmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcE9uRXJyb3IgPSB0aGlzLl9zdG9wQ2hlY2tTZXNzaW9uT25FcnJvcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Vzc2lvbklGcmFtZSA9IG5ldyB0aGlzLl9DaGVja1Nlc3Npb25JRnJhbWVDdG9yKHRoaXMuX2NhbGxiYWNrLmJpbmQodGhpcyksIGNsaWVudF9pZCwgdXJsLCBpbnRlcnZhbCwgc3RvcE9uRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUubG9hZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTZXNzaW9uSUZyYW1lLnN0YXJ0KHNlc3Npb25fc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiU2Vzc2lvbk1vbml0b3IuX3N0YXJ0OiBObyBjaGVjayBzZXNzaW9uIGlmcmFtZSBmb3VuZCBpbiB0aGUgbWV0YWRhdGFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYXRjaCB0byBzdXBwcmVzcyBlcnJvcnMgc2luY2Ugd2UncmUgaW4gbm9uLXByb21pc2UgY2FsbGJhY2tcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJTZXNzaW9uTW9uaXRvci5fc3RhcnQ6IEVycm9yIGZyb20gZ2V0Q2hlY2tTZXNzaW9uSWZyYW1lOlwiLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Vzc2lvbklGcmFtZS5zdGFydChzZXNzaW9uX3N0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfc3RvcCgpIHtcclxuICAgICAgICB0aGlzLl9zdWIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NpZCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUpIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX3N0b3BcIik7XHJcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Vzc2lvbklGcmFtZS5zdG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9jYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5xdWVyeVNlc3Npb25TdGF0dXMoKS50aGVuKHNlc3Npb24gPT4ge1xyXG4gICAgICAgICAgICB2YXIgcmFpc2VVc2VyU2lnbmVkT3V0RXZlbnQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uLnN1YiA9PT0gdGhpcy5fc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFpc2VVc2VyU2lnbmVkT3V0RXZlbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUuc3RhcnQoc2Vzc2lvbi5zZXNzaW9uX3N0YXRlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlc3Npb24uc2lkID09PSB0aGlzLl9zaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX2NhbGxiYWNrOiBTYW1lIHN1YiBzdGlsbCBsb2dnZWQgaW4gYXQgT1AsIHJlc3RhcnRpbmcgY2hlY2sgc2Vzc2lvbiBpZnJhbWU7IHNlc3Npb25fc3RhdGU6XCIsIHNlc3Npb24uc2Vzc2lvbl9zdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJTZXNzaW9uTW9uaXRvci5fY2FsbGJhY2s6IFNhbWUgc3ViIHN0aWxsIGxvZ2dlZCBpbiBhdCBPUCwgc2Vzc2lvbiBzdGF0ZSBoYXMgY2hhbmdlZCwgcmVzdGFydGluZyBjaGVjayBzZXNzaW9uIGlmcmFtZTsgc2Vzc2lvbl9zdGF0ZTpcIiwgc2Vzc2lvbi5zZXNzaW9uX3N0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZXZlbnRzLl9yYWlzZVVzZXJTZXNzaW9uQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9jYWxsYmFjazogRGlmZmVyZW50IHN1YmplY3Qgc2lnbmVkIGludG8gT1A6XCIsIHNlc3Npb24uc3ViKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9jYWxsYmFjazogU3ViamVjdCBubyBsb25nZXIgc2lnbmVkIGludG8gT1BcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChyYWlzZVVzZXJTaWduZWRPdXRFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX2NhbGxiYWNrOiBTZXNzaW9uTW9uaXRvci5fY2FsbGJhY2s7IHJhaXNpbmcgc2lnbmVkIG91dCBldmVudFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5fcmFpc2VVc2VyU2lnbmVkT3V0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTZXNzaW9uTW9uaXRvci5fY2FsbGJhY2s6IEVycm9yIGNhbGxpbmcgcXVlcnlDdXJyZW50U2lnbmluU2Vzc2lvbjsgcmFpc2luZyBzaWduZWQgb3V0IGV2ZW50XCIsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZXZlbnRzLl9yYWlzZVVzZXJTaWduZWRPdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IFVybFV0aWxpdHkgfSBmcm9tICcuL1VybFV0aWxpdHknO1xyXG5pbXBvcnQgeyBTaWduaW5TdGF0ZSB9IGZyb20gJy4vU2lnbmluU3RhdGUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNpZ25pblJlcXVlc3Qge1xyXG4gICAgY29uc3RydWN0b3Ioe1xyXG4gICAgICAgIC8vIG1hbmRhdG9yeVxyXG4gICAgICAgIHVybCwgY2xpZW50X2lkLCByZWRpcmVjdF91cmksIHJlc3BvbnNlX3R5cGUsIHNjb3BlLCBhdXRob3JpdHksXHJcbiAgICAgICAgLy8gb3B0aW9uYWxcclxuICAgICAgICBkYXRhLCBwcm9tcHQsIGRpc3BsYXksIG1heF9hZ2UsIHVpX2xvY2FsZXMsIGlkX3Rva2VuX2hpbnQsIGxvZ2luX2hpbnQsIGFjcl92YWx1ZXMsIHJlc291cmNlLCByZXNwb25zZV9tb2RlLFxyXG4gICAgICAgIHJlcXVlc3QsIHJlcXVlc3RfdXJpLCBleHRyYVF1ZXJ5UGFyYW1zLFxyXG4gICAgfSkge1xyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gdXJsIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNsaWVudF9pZCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTaWduaW5SZXF1ZXN0LmN0b3I6IE5vIGNsaWVudF9pZCBwYXNzZWRcIik7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNsaWVudF9pZFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFyZWRpcmVjdF91cmkpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiU2lnbmluUmVxdWVzdC5jdG9yOiBObyByZWRpcmVjdF91cmkgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZWRpcmVjdF91cmlcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcmVzcG9uc2VfdHlwZSkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTaWduaW5SZXF1ZXN0LmN0b3I6IE5vIHJlc3BvbnNlX3R5cGUgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXNwb25zZV90eXBlXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXNjb3BlKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gc2NvcGUgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzY29wZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhdXRob3JpdHkpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiU2lnbmluUmVxdWVzdC5jdG9yOiBObyBhdXRob3JpdHkgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhdXRob3JpdHlcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgb2lkYyA9IFNpZ25pblJlcXVlc3QuaXNPaWRjKHJlc3BvbnNlX3R5cGUpO1xyXG4gICAgICAgIGxldCBjb2RlID0gU2lnbmluUmVxdWVzdC5pc0NvZGUocmVzcG9uc2VfdHlwZSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ldyBTaWduaW5TdGF0ZSh7IG5vbmNlOiBvaWRjLCBkYXRhLCBjbGllbnRfaWQsIGF1dGhvcml0eSwgcmVkaXJlY3RfdXJpLCBjb2RlX3ZlcmlmaWVyOiBjb2RlIH0pO1xyXG5cclxuICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcImNsaWVudF9pZFwiLCBjbGllbnRfaWQpO1xyXG4gICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwicmVkaXJlY3RfdXJpXCIsIHJlZGlyZWN0X3VyaSk7XHJcbiAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwgXCJyZXNwb25zZV90eXBlXCIsIHJlc3BvbnNlX3R5cGUpO1xyXG4gICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwic2NvcGVcIiwgc2NvcGUpO1xyXG5cclxuICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcInN0YXRlXCIsIHRoaXMuc3RhdGUuaWQpO1xyXG4gICAgICAgIGlmIChvaWRjKSB7XHJcbiAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwibm9uY2VcIiwgdGhpcy5zdGF0ZS5ub25jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2RlKSB7XHJcbiAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwiY29kZV9jaGFsbGVuZ2VcIiwgdGhpcy5zdGF0ZS5jb2RlX2NoYWxsZW5nZSk7XHJcbiAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kXCIsIFwiUzI1NlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBvcHRpb25hbCA9IHsgcHJvbXB0LCBkaXNwbGF5LCBtYXhfYWdlLCB1aV9sb2NhbGVzLCBpZF90b2tlbl9oaW50LCBsb2dpbl9oaW50LCBhY3JfdmFsdWVzLCByZXNvdXJjZSwgcmVxdWVzdCwgcmVxdWVzdF91cmksIHJlc3BvbnNlX21vZGUgfTtcclxuICAgICAgICBmb3IobGV0IGtleSBpbiBvcHRpb25hbCl7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25hbFtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBrZXksIG9wdGlvbmFsW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IobGV0IGtleSBpbiBleHRyYVF1ZXJ5UGFyYW1zKXtcclxuICAgICAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwga2V5LCBleHRyYVF1ZXJ5UGFyYW1zW2tleV0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnVybCA9IHVybDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPaWRjKHJlc3BvbnNlX3R5cGUpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2VfdHlwZS5zcGxpdCgvXFxzKy9nKS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gXCJpZF90b2tlblwiO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiAhIShyZXN1bHRbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc09BdXRoKHJlc3BvbnNlX3R5cGUpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2VfdHlwZS5zcGxpdCgvXFxzKy9nKS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gXCJ0b2tlblwiO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiAhIShyZXN1bHRbMF0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgaXNDb2RlKHJlc3BvbnNlX3R5cGUpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2VfdHlwZS5zcGxpdCgvXFxzKy9nKS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gXCJjb2RlXCI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICEhKHJlc3VsdFswXSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgVXJsVXRpbGl0eSB9IGZyb20gJy4vVXJsVXRpbGl0eSc7XHJcblxyXG5jb25zdCBPaWRjU2NvcGUgPSBcIm9wZW5pZFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNpZ25pblJlc3BvbnNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHVybCwgZGVsaW1pdGVyID0gXCIjXCIpIHtcclxuXHJcbiAgICAgICAgdmFyIHZhbHVlcyA9IFVybFV0aWxpdHkucGFyc2VVcmxGcmFnbWVudCh1cmwsIGRlbGltaXRlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZXJyb3IgPSB2YWx1ZXMuZXJyb3I7XHJcbiAgICAgICAgdGhpcy5lcnJvcl9kZXNjcmlwdGlvbiA9IHZhbHVlcy5lcnJvcl9kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLmVycm9yX3VyaSA9IHZhbHVlcy5lcnJvcl91cmk7XHJcblxyXG4gICAgICAgIHRoaXMuY29kZSA9IHZhbHVlcy5jb2RlO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB2YWx1ZXMuc3RhdGU7XHJcbiAgICAgICAgdGhpcy5pZF90b2tlbiA9IHZhbHVlcy5pZF90b2tlbjtcclxuICAgICAgICB0aGlzLnNlc3Npb25fc3RhdGUgPSB2YWx1ZXMuc2Vzc2lvbl9zdGF0ZTtcclxuICAgICAgICB0aGlzLmFjY2Vzc190b2tlbiA9IHZhbHVlcy5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgdGhpcy50b2tlbl90eXBlID0gdmFsdWVzLnRva2VuX3R5cGU7XHJcbiAgICAgICAgdGhpcy5zY29wZSA9IHZhbHVlcy5zY29wZTtcclxuICAgICAgICB0aGlzLnByb2ZpbGUgPSB1bmRlZmluZWQ7IC8vIHdpbGwgYmUgc2V0IGZyb20gUmVzcG9uc2VWYWxpZGF0b3JcclxuXHJcbiAgICAgICAgdGhpcy5leHBpcmVzX2luID0gdmFsdWVzLmV4cGlyZXNfaW47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV4cGlyZXNfaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXhwaXJlc19hdCkge1xyXG4gICAgICAgICAgICBsZXQgbm93ID0gcGFyc2VJbnQoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHBpcmVzX2F0IC0gbm93O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgc2V0IGV4cGlyZXNfaW4odmFsdWUpe1xyXG4gICAgICAgIGxldCBleHBpcmVzX2luID0gcGFyc2VJbnQodmFsdWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXhwaXJlc19pbiA9PT0gJ251bWJlcicgJiYgZXhwaXJlc19pbiA+IDApIHtcclxuICAgICAgICAgICAgbGV0IG5vdyA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICAgICAgdGhpcy5leHBpcmVzX2F0ID0gbm93ICsgZXhwaXJlc19pbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV4cGlyZWQoKSB7XHJcbiAgICAgICAgbGV0IGV4cGlyZXNfaW4gPSB0aGlzLmV4cGlyZXNfaW47XHJcbiAgICAgICAgaWYgKGV4cGlyZXNfaW4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwaXJlc19pbiA8PSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzY29wZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNjb3BlIHx8IFwiXCIpLnNwbGl0KFwiIFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNPcGVuSWRDb25uZWN0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNjb3Blcy5pbmRleE9mKE9pZGNTY29wZSkgPj0gMCB8fCAhIXRoaXMuaWRfdG9rZW47XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4vU3RhdGUnO1xyXG5pbXBvcnQgeyBKb3NlVXRpbCB9IGZyb20gJy4vSm9zZVV0aWwnO1xyXG5pbXBvcnQgcmFuZG9tIGZyb20gJy4vcmFuZG9tJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduaW5TdGF0ZSBleHRlbmRzIFN0YXRlIHtcclxuICAgIGNvbnN0cnVjdG9yKHtub25jZSwgYXV0aG9yaXR5LCBjbGllbnRfaWQsIHJlZGlyZWN0X3VyaSwgY29kZV92ZXJpZmllcn0gPSB7fSkge1xyXG4gICAgICAgIHN1cGVyKGFyZ3VtZW50c1swXSk7XHJcblxyXG4gICAgICAgIGlmIChub25jZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9ub25jZSA9IHJhbmRvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChub25jZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9ub25jZSA9IG5vbmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvZGVfdmVyaWZpZXIgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gcmFuZG9tKCkgcHJvZHVjZXMgMzIgbGVuZ3RoXHJcbiAgICAgICAgICAgIHRoaXMuX2NvZGVfdmVyaWZpZXIgPSByYW5kb20oKSArIHJhbmRvbSgpICsgcmFuZG9tKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvZGVfdmVyaWZpZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29kZV92ZXJpZmllciA9IGNvZGVfdmVyaWZpZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLmNvZGVfdmVyaWZpZXIpIHtcclxuICAgICAgICAgICAgbGV0IGhhc2ggPSBKb3NlVXRpbC5oYXNoU3RyaW5nKHRoaXMuY29kZV92ZXJpZmllciwgXCJTSEEyNTZcIik7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvZGVfY2hhbGxlbmdlID0gSm9zZVV0aWwuaGV4VG9CYXNlNjRVcmwoaGFzaCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9yZWRpcmVjdF91cmkgPSByZWRpcmVjdF91cmk7XHJcbiAgICAgICAgdGhpcy5fYXV0aG9yaXR5ID0gYXV0aG9yaXR5O1xyXG4gICAgICAgIHRoaXMuX2NsaWVudF9pZCA9IGNsaWVudF9pZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbm9uY2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vbmNlO1xyXG4gICAgfVxyXG4gICAgZ2V0IGF1dGhvcml0eSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aG9yaXR5O1xyXG4gICAgfVxyXG4gICAgZ2V0IGNsaWVudF9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2xpZW50X2lkO1xyXG4gICAgfVxyXG4gICAgZ2V0IHJlZGlyZWN0X3VyaSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVkaXJlY3RfdXJpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGNvZGVfdmVyaWZpZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVfdmVyaWZpZXI7XHJcbiAgICB9XHJcbiAgICBnZXQgY29kZV9jaGFsbGVuZ2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVfY2hhbGxlbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIHRvU3RvcmFnZVN0cmluZygpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJTaWduaW5TdGF0ZS50b1N0b3JhZ2VTdHJpbmdcIik7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcclxuICAgICAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxyXG4gICAgICAgICAgICBub25jZTogdGhpcy5ub25jZSxcclxuICAgICAgICAgICAgY29kZV92ZXJpZmllcjogdGhpcy5jb2RlX3ZlcmlmaWVyLFxyXG4gICAgICAgICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RfdXJpLFxyXG4gICAgICAgICAgICBhdXRob3JpdHk6IHRoaXMuYXV0aG9yaXR5LFxyXG4gICAgICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50X2lkXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21TdG9yYWdlU3RyaW5nKHN0b3JhZ2VTdHJpbmcpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJTaWduaW5TdGF0ZS5mcm9tU3RvcmFnZVN0cmluZ1wiKTtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3RvcmFnZVN0cmluZyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTaWduaW5TdGF0ZShkYXRhKTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IFVybFV0aWxpdHkgfSBmcm9tICcuL1VybFV0aWxpdHknO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4vU3RhdGUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNpZ25vdXRSZXF1ZXN0IHtcclxuICAgIGNvbnN0cnVjdG9yKHt1cmwsIGlkX3Rva2VuX2hpbnQsIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSwgZGF0YX0pIHtcclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTaWdub3V0UmVxdWVzdC5jdG9yOiBObyB1cmwgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmxcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaWRfdG9rZW5faGludCkge1xyXG4gICAgICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcImlkX3Rva2VuX2hpbnRcIiwgaWRfdG9rZW5faGludCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpKSB7XHJcbiAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwicG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpXCIsIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IG5ldyBTdGF0ZSh7IGRhdGEgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwgXCJzdGF0ZVwiLCB0aGlzLnN0YXRlLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgVXJsVXRpbGl0eSB9IGZyb20gJy4vVXJsVXRpbGl0eSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2lnbm91dFJlc3BvbnNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHVybCkge1xyXG5cclxuICAgICAgICB2YXIgdmFsdWVzID0gVXJsVXRpbGl0eS5wYXJzZVVybEZyYWdtZW50KHVybCwgXCI/XCIpO1xyXG5cclxuICAgICAgICB0aGlzLmVycm9yID0gdmFsdWVzLmVycm9yO1xyXG4gICAgICAgIHRoaXMuZXJyb3JfZGVzY3JpcHRpb24gPSB2YWx1ZXMuZXJyb3JfZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5lcnJvcl91cmkgPSB2YWx1ZXMuZXJyb3JfdXJpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0gdmFsdWVzLnN0YXRlO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWxlbnRSZW5ld1NlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHVzZXJNYW5hZ2VyKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIgPSB1c2VyTWFuYWdlcjtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gdGhpcy5fdG9rZW5FeHBpcmluZy5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5ldmVudHMuYWRkQWNjZXNzVG9rZW5FeHBpcmluZyh0aGlzLl9jYWxsYmFjayk7XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzIHdpbGwgdHJpZ2dlciBsb2FkaW5nIG9mIHRoZSB1c2VyIHNvIHRoZSBleHBpcmluZyBldmVudHMgY2FuIGJlIGluaXRpYWxpemVkXHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmdldFVzZXIoKS50aGVuKHVzZXI9PntcclxuICAgICAgICAgICAgICAgIC8vIGRlbGliZXJhdGUgbm9wXHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGVycj0+e1xyXG4gICAgICAgICAgICAgICAgLy8gY2F0Y2ggdG8gc3VwcHJlc3MgZXJyb3JzIHNpbmNlIHdlJ3JlIGluIGEgY3RvclxyXG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiU2lsZW50UmVuZXdTZXJ2aWNlLnN0YXJ0OiBFcnJvciBmcm9tIGdldFVzZXI6XCIsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0b3AoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5yZW1vdmVBY2Nlc3NUb2tlbkV4cGlyaW5nKHRoaXMuX2NhbGxiYWNrKTtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfdG9rZW5FeHBpcmluZygpIHtcclxuICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5zaWduaW5TaWxlbnQoKS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTaWxlbnRSZW5ld1NlcnZpY2UuX3Rva2VuRXhwaXJpbmc6IFNpbGVudCB0b2tlbiByZW5ld2FsIHN1Y2Nlc3NmdWxcIik7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiU2lsZW50UmVuZXdTZXJ2aWNlLl90b2tlbkV4cGlyaW5nOiBFcnJvciBmcm9tIHNpZ25pblNpbGVudDpcIiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5ldmVudHMuX3JhaXNlU2lsZW50UmVuZXdFcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHJhbmRvbSBmcm9tICcuL3JhbmRvbSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU3RhdGUge1xyXG4gICAgY29uc3RydWN0b3Ioe2lkLCBkYXRhLCBjcmVhdGVkfSA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5faWQgPSBpZCB8fCByYW5kb20oKTtcclxuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBjcmVhdGVkID09PSAnbnVtYmVyJyAmJiBjcmVhdGVkID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVkID0gY3JlYXRlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZWQgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBpZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgICB9XHJcbiAgICBnZXQgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICAgIH1cclxuICAgIGdldCBjcmVhdGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRvU3RvcmFnZVN0cmluZygpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJTdGF0ZS50b1N0b3JhZ2VTdHJpbmdcIik7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcclxuICAgICAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21TdG9yYWdlU3RyaW5nKHN0b3JhZ2VTdHJpbmcpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJTdGF0ZS5mcm9tU3RvcmFnZVN0cmluZ1wiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFN0YXRlKEpTT04ucGFyc2Uoc3RvcmFnZVN0cmluZykpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjbGVhclN0YWxlU3RhdGUoc3RvcmFnZSwgYWdlKSB7XHJcblxyXG4gICAgICAgIHZhciBjdXRvZmYgPSBEYXRlLm5vdygpIC8gMTAwMCAtIGFnZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2UuZ2V0QWxsS2V5cygpLnRoZW4oa2V5cyA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogZ290IGtleXNcIiwga2V5cyk7XHJcblxyXG4gICAgICAgICAgICB2YXIgcHJvbWlzZXMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0ga2V5c1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gc3RvcmFnZS5nZXQoa2V5KS50aGVuKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IFN0YXRlLmZyb21TdG9yYWdlU3RyaW5nKGl0ZW0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU3RhdGUuY2xlYXJTdGFsZVN0YXRlOiBnb3QgaXRlbSBmcm9tIGtleTogXCIsIGtleSwgc3RhdGUuY3JlYXRlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmNyZWF0ZWQgPD0gY3V0b2ZmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiU3RhdGUuY2xlYXJTdGFsZVN0YXRlOiBFcnJvciBwYXJzaW5nIHN0YXRlIGZvciBrZXlcIiwga2V5LCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU3RhdGUuY2xlYXJTdGFsZVN0YXRlOiBubyBpdGVtIGluIHN0b3JhZ2UgZm9yIGtleTogXCIsIGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogcmVtb3ZlZCBpdGVtIGZvciBrZXk6IFwiLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmFnZS5yZW1vdmUoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTdGF0ZS5jbGVhclN0YWxlU3RhdGU6IHdhaXRpbmcgb24gcHJvbWlzZSBjb3VudDpcIiwgcHJvbWlzZXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vR2xvYmFsJztcclxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL0V2ZW50JztcclxuXHJcbmNvbnN0IFRpbWVyRHVyYXRpb24gPSA1OyAvLyBzZWNvbmRzXHJcblxyXG5leHBvcnQgY2xhc3MgVGltZXIgZXh0ZW5kcyBFdmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IobmFtZSwgdGltZXIgPSBHbG9iYWwudGltZXIsIG5vd0Z1bmMgPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBzdXBlcihuYW1lKTtcclxuICAgICAgICB0aGlzLl90aW1lciA9IHRpbWVyO1xyXG5cclxuICAgICAgICBpZiAobm93RnVuYykge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3dGdW5jID0gbm93RnVuYztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vd0Z1bmMgPSAoKSA9PiBEYXRlLm5vdygpIC8gMTAwMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG5vdygpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy5fbm93RnVuYygpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KGR1cmF0aW9uKSB7XHJcbiAgICAgICAgaWYgKGR1cmF0aW9uIDw9IDApIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkdXJhdGlvbiA9IHBhcnNlSW50KGR1cmF0aW9uKTtcclxuXHJcbiAgICAgICAgdmFyIGV4cGlyYXRpb24gPSB0aGlzLm5vdyArIGR1cmF0aW9uO1xyXG4gICAgICAgIGlmICh0aGlzLmV4cGlyYXRpb24gPT09IGV4cGlyYXRpb24gJiYgdGhpcy5fdGltZXJIYW5kbGUpIHtcclxuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byByZWluaXRpYWxpemUgdG8gc2FtZSBleHBpcmF0aW9uLCBzbyBiYWlsIG91dFxyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUaW1lci5pbml0IHRpbWVyIFwiICsgdGhpcy5fbmFtZSArIFwiIHNraXBwaW5nIGluaXRpYWxpemF0aW9uIHNpbmNlIGFscmVhZHkgaW5pdGlhbGl6ZWQgZm9yIGV4cGlyYXRpb246XCIsIHRoaXMuZXhwaXJhdGlvbik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcblxyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlRpbWVyLmluaXQgdGltZXIgXCIgKyB0aGlzLl9uYW1lICsgXCIgZm9yIGR1cmF0aW9uOlwiLCBkdXJhdGlvbik7XHJcbiAgICAgICAgdGhpcy5fZXhwaXJhdGlvbiA9IGV4cGlyYXRpb247XHJcblxyXG4gICAgICAgIC8vIHdlJ3JlIHVzaW5nIGEgZmFpcmx5IHNob3J0IHRpbWVyIGFuZCB0aGVuIGNoZWNraW5nIHRoZSBleHBpcmF0aW9uIGluIHRoZVxyXG4gICAgICAgIC8vIGNhbGxiYWNrIHRvIGhhbmRsZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGJyb3dzZXIgZGV2aWNlIHNsZWVwcywgYW5kIHRoZW5cclxuICAgICAgICAvLyB0aGUgdGltZXJzIGVuZCB1cCBnZXR0aW5nIGRlbGF5ZWQuXHJcbiAgICAgICAgdmFyIHRpbWVyRHVyYXRpb24gPSBUaW1lckR1cmF0aW9uO1xyXG4gICAgICAgIGlmIChkdXJhdGlvbiA8IHRpbWVyRHVyYXRpb24pIHtcclxuICAgICAgICAgICAgdGltZXJEdXJhdGlvbiA9IGR1cmF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl90aW1lckhhbmRsZSA9IHRoaXMuX3RpbWVyLnNldEludGVydmFsKHRoaXMuX2NhbGxiYWNrLmJpbmQodGhpcyksIHRpbWVyRHVyYXRpb24gKiAxMDAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0IGV4cGlyYXRpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGlyYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl90aW1lckhhbmRsZSkge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUaW1lci5jYW5jZWw6IFwiLCB0aGlzLl9uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5fdGltZXIuY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lckhhbmRsZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVySGFuZGxlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX2NhbGxiYWNrKCkge1xyXG4gICAgICAgIHZhciBkaWZmID0gdGhpcy5fZXhwaXJhdGlvbiAtIHRoaXMubm93O1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlRpbWVyLmNhbGxiYWNrOyBcIiArIHRoaXMuX25hbWUgKyBcIiB0aW1lciBleHBpcmVzIGluOlwiLCBkaWZmKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2V4cGlyYXRpb24gPD0gdGhpcy5ub3cpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcclxuICAgICAgICAgICAgc3VwZXIucmFpc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgSnNvblNlcnZpY2UgfSBmcm9tICcuL0pzb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9NZXRhZGF0YVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgVG9rZW5DbGllbnQge1xyXG4gICAgY29uc3RydWN0b3Ioc2V0dGluZ3MsIEpzb25TZXJ2aWNlQ3RvciA9IEpzb25TZXJ2aWNlLCBNZXRhZGF0YVNlcnZpY2VDdG9yID0gTWV0YWRhdGFTZXJ2aWNlKSB7XHJcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlbkNsaWVudC5jdG9yOiBObyBzZXR0aW5ncyBwYXNzZWRcIik7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNldHRpbmdzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9qc29uU2VydmljZSA9IG5ldyBKc29uU2VydmljZUN0b3IoKTtcclxuICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UgPSBuZXcgTWV0YWRhdGFTZXJ2aWNlQ3Rvcih0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhjaGFuZ2VDb2RlKGFyZ3MgPSB7fSkge1xyXG4gICAgICAgIGFyZ3MuZ3JhbnRfdHlwZSA9IGFyZ3MuZ3JhbnRfdHlwZSB8fCBcImF1dGhvcml6YXRpb25fY29kZVwiO1xyXG4gICAgICAgIGFyZ3MuY2xpZW50X2lkID0gYXJncy5jbGllbnRfaWQgfHwgdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkO1xyXG4gICAgICAgIGFyZ3MucmVkaXJlY3RfdXJpID0gYXJncy5yZWRpcmVjdF91cmkgfHwgdGhpcy5fc2V0dGluZ3MucmVkaXJlY3RfdXJpO1xyXG5cclxuICAgICAgICBpZiAoIWFyZ3MuY29kZSkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IE5vIGNvZGUgcGFzc2VkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQSBjb2RlIGlzIHJlcXVpcmVkXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhcmdzLnJlZGlyZWN0X3VyaSkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IE5vIHJlZGlyZWN0X3VyaSBwYXNzZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBIHJlZGlyZWN0X3VyaSBpcyByZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5jb2RlX3ZlcmlmaWVyKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuQ2xpZW50LmV4Y2hhbmdlQ29kZTogTm8gY29kZV92ZXJpZmllciBwYXNzZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBIGNvZGVfdmVyaWZpZXIgaXMgcmVxdWlyZWRcIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZ3MuY2xpZW50X2lkKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuQ2xpZW50LmV4Y2hhbmdlQ29kZTogTm8gY2xpZW50X2lkIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkEgY2xpZW50X2lkIGlzIHJlcXVpcmVkXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0VG9rZW5FbmRwb2ludChmYWxzZSkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IFJlY2VpdmVkIHRva2VuIGVuZHBvaW50XCIpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLnBvc3RGb3JtKHVybCwgYXJncykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IHJlc3BvbnNlIHJlY2VpdmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBleGNoYW5nZVJlZnJlc2hUb2tlbihhcmdzID0ge30pIHtcclxuICAgICAgICBhcmdzLmdyYW50X3R5cGUgPSBhcmdzLmdyYW50X3R5cGUgfHwgXCJyZWZyZXNoX3Rva2VuXCI7XHJcbiAgICAgICAgYXJncy5jbGllbnRfaWQgPSBhcmdzLmNsaWVudF9pZCB8fCB0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQ7XHJcblxyXG4gICAgICAgIGlmICghYXJncy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuQ2xpZW50LmV4Y2hhbmdlUmVmcmVzaFRva2VuOiBObyByZWZyZXNoX3Rva2VuIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkEgcmVmcmVzaF90b2tlbiBpcyByZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5jbGllbnRfaWQpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5DbGllbnQuZXhjaGFuZ2VSZWZyZXNoVG9rZW46IE5vIGNsaWVudF9pZCBwYXNzZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBIGNsaWVudF9pZCBpcyByZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlLmdldFRva2VuRW5kcG9pbnQoZmFsc2UpLnRoZW4odXJsID0+IHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVG9rZW5DbGllbnQuZXhjaGFuZ2VSZWZyZXNoVG9rZW46IFJlY2VpdmVkIHRva2VuIGVuZHBvaW50XCIpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLnBvc3RGb3JtKHVybCwgYXJncykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZVJlZnJlc2hUb2tlbjogcmVzcG9uc2UgcmVjZWl2ZWRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9NZXRhZGF0YVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbCc7XHJcblxyXG5jb25zdCBBY2Nlc3NUb2tlblR5cGVIaW50ID0gXCJhY2Nlc3NfdG9rZW5cIjtcclxuY29uc3QgUmVmcmVzaFRva2VuVHlwZUhpbnQgPSBcInJlZnJlc2hfdG9rZW5cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUb2tlblJldm9jYXRpb25DbGllbnQge1xyXG4gICAgY29uc3RydWN0b3Ioc2V0dGluZ3MsIFhNTEh0dHBSZXF1ZXN0Q3RvciA9IEdsb2JhbC5YTUxIdHRwUmVxdWVzdCwgTWV0YWRhdGFTZXJ2aWNlQ3RvciA9IE1ldGFkYXRhU2VydmljZSkge1xyXG4gICAgICAgIGlmICghc2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LmN0b3I6IE5vIHNldHRpbmdzIHByb3ZpZGVkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBzZXR0aW5ncyBwcm92aWRlZC5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuX1hNTEh0dHBSZXF1ZXN0Q3RvciA9IFhNTEh0dHBSZXF1ZXN0Q3RvcjtcclxuICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UgPSBuZXcgTWV0YWRhdGFTZXJ2aWNlQ3Rvcih0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2b2tlKHRva2VuLCByZXF1aXJlZCwgdHlwZSA9IFwiYWNjZXNzX3Rva2VuXCIpIHtcclxuICAgICAgICBpZiAoIXRva2VuKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuUmV2b2NhdGlvbkNsaWVudC5yZXZva2U6IE5vIHRva2VuIHByb3ZpZGVkXCIpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyB0b2tlbiBwcm92aWRlZC5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZSAhPT0gQWNjZXNzVG9rZW5UeXBlSGludCAmJiB0eXBlICE9IFJlZnJlc2hUb2tlblR5cGVIaW50KSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuUmV2b2NhdGlvbkNsaWVudC5yZXZva2U6IEludmFsaWQgdG9rZW4gdHlwZVwiKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0b2tlbiB0eXBlLlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0UmV2b2NhdGlvbkVuZHBvaW50KCkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZTogUmV2b2NhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJldm9jYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBub3QgcmVxdWlyZWQsIHNvIGRvbid0IGVycm9yIGFuZCBqdXN0IHJldHVyblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlblJldm9jYXRpb25DbGllbnQucmV2b2tlOiBSZXZva2luZyBcIiArIHR5cGUpO1xyXG4gICAgICAgICAgICB2YXIgY2xpZW50X2lkID0gdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkO1xyXG4gICAgICAgICAgICB2YXIgY2xpZW50X3NlY3JldCA9IHRoaXMuX3NldHRpbmdzLmNsaWVudF9zZWNyZXQ7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXZva2UodXJsLCBjbGllbnRfaWQsIGNsaWVudF9zZWNyZXQsIHRva2VuLCB0eXBlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfcmV2b2tlKHVybCwgY2xpZW50X2lkLCBjbGllbnRfc2VjcmV0LCB0b2tlbiwgdHlwZSkge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdmFyIHhociA9IG5ldyB0aGlzLl9YTUxIdHRwUmVxdWVzdEN0b3IoKTtcclxuICAgICAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIHVybCk7XHJcblxyXG4gICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZTogSFRUUCByZXNwb25zZSByZWNlaXZlZCwgc3RhdHVzXCIsIHhoci5zdGF0dXMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoRXJyb3IoeGhyLnN0YXR1c1RleHQgKyBcIiAoXCIgKyB4aHIuc3RhdHVzICsgXCIpXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiB7IFxyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZTogTmV0d29yayBFcnJvci5cIilcclxuICAgICAgICAgICAgICAgIHJlamVjdChcIk5ldHdvcmsgRXJyb3JcIik7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgYm9keSA9IFwiY2xpZW50X2lkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudF9pZCk7XHJcbiAgICAgICAgICAgIGlmIChjbGllbnRfc2VjcmV0KSB7XHJcbiAgICAgICAgICAgICAgICBib2R5ICs9IFwiJmNsaWVudF9zZWNyZXQ9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoY2xpZW50X3NlY3JldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYm9keSArPSBcIiZ0b2tlbl90eXBlX2hpbnQ9XCIgKyBlbmNvZGVVUklDb21wb25lbnQodHlwZSk7XHJcbiAgICAgICAgICAgIGJvZHkgKz0gXCImdG9rZW49XCIgKyBlbmNvZGVVUklDb21wb25lbnQodG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIik7XHJcbiAgICAgICAgICAgIHhoci5zZW5kKGJvZHkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi9HbG9iYWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFVybFV0aWxpdHkge1xyXG4gICAgc3RhdGljIGFkZFF1ZXJ5UGFyYW0odXJsLCBuYW1lLCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpIDwgMCkge1xyXG4gICAgICAgICAgICB1cmwgKz0gXCI/XCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodXJsW3VybC5sZW5ndGggLSAxXSAhPT0gXCI/XCIpIHtcclxuICAgICAgICAgICAgdXJsICs9IFwiJlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdXJsICs9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKTtcclxuICAgICAgICB1cmwgKz0gXCI9XCI7XHJcbiAgICAgICAgdXJsICs9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhcnNlVXJsRnJhZ21lbnQodmFsdWUsIGRlbGltaXRlciA9IFwiI1wiLCBnbG9iYWwgPSBHbG9iYWwpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyl7XHJcbiAgICAgICAgICAgIHZhbHVlID0gZ2xvYmFsLmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgaWR4ID0gdmFsdWUubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcclxuICAgICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHIoaWR4ICsgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVsaW1pdGVyID09PSBcIj9cIikge1xyXG4gICAgICAgICAgICAvLyBpZiB3ZSdyZSBkb2luZyBxdWVyeSwgdGhlbiBzdHJpcCBvZmYgaGFzaCBmcmFnbWVudCBiZWZvcmUgd2UgcGFyc2VcclxuICAgICAgICAgICAgaWR4ID0gdmFsdWUuaW5kZXhPZignIycpO1xyXG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyKDAsIGlkeCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBwYXJhbXMgPSB7fSxcclxuICAgICAgICAgICAgcmVnZXggPSAvKFteJj1dKyk9KFteJl0qKS9nLFxyXG4gICAgICAgICAgICBtO1xyXG5cclxuICAgICAgICB2YXIgY291bnRlciA9IDA7XHJcbiAgICAgICAgd2hpbGUgKG0gPSByZWdleC5leGVjKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBwYXJhbXNbZGVjb2RlVVJJQ29tcG9uZW50KG1bMV0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChtWzJdKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXIrKyA+IDUwKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJVcmxVdGlsaXR5LnBhcnNlVXJsRnJhZ21lbnQ6IHJlc3BvbnNlIGV4Y2VlZGVkIGV4cGVjdGVkIG51bWJlciBvZiBwYXJhbWV0ZXJzXCIsIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFwiUmVzcG9uc2UgZXhjZWVkZWQgZXhwZWN0ZWQgbnVtYmVyIG9mIHBhcmFtZXRlcnNcIlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwYXJhbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcblxyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcih7aWRfdG9rZW4sIHNlc3Npb25fc3RhdGUsIGFjY2Vzc190b2tlbiwgcmVmcmVzaF90b2tlbiwgdG9rZW5fdHlwZSwgc2NvcGUsIHByb2ZpbGUsIGV4cGlyZXNfYXQsIHN0YXRlfSkge1xyXG4gICAgICAgIHRoaXMuaWRfdG9rZW4gPSBpZF90b2tlbjtcclxuICAgICAgICB0aGlzLnNlc3Npb25fc3RhdGUgPSBzZXNzaW9uX3N0YXRlO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzX3Rva2VuID0gYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaF90b2tlbiA9IHJlZnJlc2hfdG9rZW47XHJcbiAgICAgICAgdGhpcy50b2tlbl90eXBlID0gdG9rZW5fdHlwZTtcclxuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XHJcbiAgICAgICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZTtcclxuICAgICAgICB0aGlzLmV4cGlyZXNfYXQgPSBleHBpcmVzX2F0O1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXhwaXJlc19pbigpIHtcclxuICAgICAgICBpZiAodGhpcy5leHBpcmVzX2F0KSB7XHJcbiAgICAgICAgICAgIGxldCBub3cgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cGlyZXNfYXQgLSBub3c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBzZXQgZXhwaXJlc19pbih2YWx1ZSkge1xyXG4gICAgICAgIGxldCBleHBpcmVzX2luID0gcGFyc2VJbnQodmFsdWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXhwaXJlc19pbiA9PT0gJ251bWJlcicgJiYgZXhwaXJlc19pbiA+IDApIHtcclxuICAgICAgICAgICAgbGV0IG5vdyA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICAgICAgdGhpcy5leHBpcmVzX2F0ID0gbm93ICsgZXhwaXJlc19pbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV4cGlyZWQoKSB7XHJcbiAgICAgICAgbGV0IGV4cGlyZXNfaW4gPSB0aGlzLmV4cGlyZXNfaW47XHJcbiAgICAgICAgaWYgKGV4cGlyZXNfaW4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwaXJlc19pbiA8PSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzY29wZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNjb3BlIHx8IFwiXCIpLnNwbGl0KFwiIFwiKTtcclxuICAgIH1cclxuXHJcbiAgICB0b1N0b3JhZ2VTdHJpbmcoKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlci50b1N0b3JhZ2VTdHJpbmdcIik7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgaWRfdG9rZW46IHRoaXMuaWRfdG9rZW4sXHJcbiAgICAgICAgICAgIHNlc3Npb25fc3RhdGU6IHRoaXMuc2Vzc2lvbl9zdGF0ZSxcclxuICAgICAgICAgICAgYWNjZXNzX3Rva2VuOiB0aGlzLmFjY2Vzc190b2tlbixcclxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy5yZWZyZXNoX3Rva2VuLFxyXG4gICAgICAgICAgICB0b2tlbl90eXBlOiB0aGlzLnRva2VuX3R5cGUsXHJcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlLFxyXG4gICAgICAgICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUsXHJcbiAgICAgICAgICAgIGV4cGlyZXNfYXQ6IHRoaXMuZXhwaXJlc19hdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tU3RvcmFnZVN0cmluZyhzdG9yYWdlU3RyaW5nKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlci5mcm9tU3RvcmFnZVN0cmluZ1wiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFVzZXIoSlNPTi5wYXJzZShzdG9yYWdlU3RyaW5nKSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgSnNvblNlcnZpY2UgfSBmcm9tICcuL0pzb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9NZXRhZGF0YVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlckluZm9TZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHNldHRpbmdzLCBKc29uU2VydmljZUN0b3IgPSBKc29uU2VydmljZSwgTWV0YWRhdGFTZXJ2aWNlQ3RvciA9IE1ldGFkYXRhU2VydmljZSkge1xyXG4gICAgICAgIGlmICghc2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlckluZm9TZXJ2aWNlLmN0b3I6IE5vIHNldHRpbmdzIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0dGluZ3NcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuX2pzb25TZXJ2aWNlID0gbmV3IEpzb25TZXJ2aWNlQ3RvcigpO1xyXG4gICAgICAgIHRoaXMuX21ldGFkYXRhU2VydmljZSA9IG5ldyBNZXRhZGF0YVNlcnZpY2VDdG9yKHRoaXMuX3NldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDbGFpbXModG9rZW4pIHtcclxuICAgICAgICBpZiAoIXRva2VuKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJJbmZvU2VydmljZS5nZXRDbGFpbXM6IE5vIHRva2VuIHBhc3NlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkEgdG9rZW4gaXMgcmVxdWlyZWRcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRVc2VySW5mb0VuZHBvaW50KCkudGhlbih1cmwgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VySW5mb1NlcnZpY2UuZ2V0Q2xhaW1zOiByZWNlaXZlZCB1c2VyaW5mbyB1cmxcIiwgdXJsKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9qc29uU2VydmljZS5nZXRKc29uKHVybCwgdG9rZW4pLnRoZW4oY2xhaW1zID0+IHtcclxuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJJbmZvU2VydmljZS5nZXRDbGFpbXM6IGNsYWltcyByZWNlaXZlZFwiLCBjbGFpbXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYWltcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBPaWRjQ2xpZW50IH0gZnJvbSAnLi9PaWRjQ2xpZW50JztcclxuaW1wb3J0IHsgVXNlck1hbmFnZXJTZXR0aW5ncyB9IGZyb20gJy4vVXNlck1hbmFnZXJTZXR0aW5ncyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL1VzZXInO1xyXG5pbXBvcnQgeyBVc2VyTWFuYWdlckV2ZW50cyB9IGZyb20gJy4vVXNlck1hbmFnZXJFdmVudHMnO1xyXG5pbXBvcnQgeyBTaWxlbnRSZW5ld1NlcnZpY2UgfSBmcm9tICcuL1NpbGVudFJlbmV3U2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25Nb25pdG9yIH0gZnJvbSAnLi9TZXNzaW9uTW9uaXRvcic7XHJcbmltcG9ydCB7IFRva2VuUmV2b2NhdGlvbkNsaWVudCB9IGZyb20gJy4vVG9rZW5SZXZvY2F0aW9uQ2xpZW50JztcclxuaW1wb3J0IHsgVG9rZW5DbGllbnQgfSBmcm9tICcuL1Rva2VuQ2xpZW50JztcclxuaW1wb3J0IHsgSm9zZVV0aWwgfSBmcm9tICcuL0pvc2VVdGlsJztcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZXIgZXh0ZW5kcyBPaWRjQ2xpZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHNldHRpbmdzID0ge30sXHJcbiAgICAgICAgU2lsZW50UmVuZXdTZXJ2aWNlQ3RvciA9IFNpbGVudFJlbmV3U2VydmljZSxcclxuICAgICAgICBTZXNzaW9uTW9uaXRvckN0b3IgPSBTZXNzaW9uTW9uaXRvcixcclxuICAgICAgICBUb2tlblJldm9jYXRpb25DbGllbnRDdG9yID0gVG9rZW5SZXZvY2F0aW9uQ2xpZW50LFxyXG4gICAgICAgIFRva2VuQ2xpZW50Q3RvciA9IFRva2VuQ2xpZW50LFxyXG4gICAgICAgIGpvc2VVdGlsID0gSm9zZVV0aWxcclxuICAgICkge1xyXG5cclxuICAgICAgICBpZiAoIShzZXR0aW5ncyBpbnN0YW5jZW9mIFVzZXJNYW5hZ2VyU2V0dGluZ3MpKSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzID0gbmV3IFVzZXJNYW5hZ2VyU2V0dGluZ3Moc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlcihzZXR0aW5ncyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IG5ldyBVc2VyTWFuYWdlckV2ZW50cyhzZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdTZXJ2aWNlID0gbmV3IFNpbGVudFJlbmV3U2VydmljZUN0b3IodGhpcyk7XHJcblxyXG4gICAgICAgIC8vIG9yZGVyIGlzIGltcG9ydGFudCBmb3IgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOyB0aGVzZSBzZXJ2aWNlcyBkZXBlbmQgdXBvbiB0aGUgZXZlbnRzLlxyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmF1dG9tYXRpY1NpbGVudFJlbmV3KSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLmN0b3I6IGF1dG9tYXRpY1NpbGVudFJlbmV3IGlzIGNvbmZpZ3VyZWQsIHNldHRpbmcgdXAgc2lsZW50IHJlbmV3XCIpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0U2lsZW50UmVuZXcoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLm1vbml0b3JTZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLmN0b3I6IG1vbml0b3JTZXNzaW9uIGlzIGNvbmZpZ3VyZWQsIHNldHRpbmcgdXAgc2Vzc2lvbiBtb25pdG9yXCIpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uTW9uaXRvciA9IG5ldyBTZXNzaW9uTW9uaXRvckN0b3IodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl90b2tlblJldm9jYXRpb25DbGllbnQgPSBuZXcgVG9rZW5SZXZvY2F0aW9uQ2xpZW50Q3Rvcih0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5fdG9rZW5DbGllbnQgPSBuZXcgVG9rZW5DbGllbnRDdG9yKHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9qb3NlVXRpbCA9IGpvc2VVdGlsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBfcmVkaXJlY3ROYXZpZ2F0b3IoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MucmVkaXJlY3ROYXZpZ2F0b3I7XHJcbiAgICB9XHJcbiAgICBnZXQgX3BvcHVwTmF2aWdhdG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnBvcHVwTmF2aWdhdG9yO1xyXG4gICAgfVxyXG4gICAgZ2V0IF9pZnJhbWVOYXZpZ2F0b3IoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuaWZyYW1lTmF2aWdhdG9yO1xyXG4gICAgfVxyXG4gICAgZ2V0IF91c2VyU3RvcmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MudXNlclN0b3JlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBldmVudHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50cztcclxuICAgIH1cclxuXHJcbiAgICBnZXRVc2VyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLmdldFVzZXI6IHVzZXIgbG9hZGVkXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50cy5sb2FkKHVzZXIsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIuZ2V0VXNlcjogdXNlciBub3QgZm91bmQgaW4gc3RvcmFnZVwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVXNlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVVzZXIobnVsbCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIucmVtb3ZlVXNlcjogdXNlciByZW1vdmVkIGZyb20gc3RvcmFnZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLnVubG9hZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNpZ25pblJlZGlyZWN0KGFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmluU3RhcnQoYXJncywgdGhpcy5fcmVkaXJlY3ROYXZpZ2F0b3IpLnRoZW4oKCk9PntcclxuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5SZWRpcmVjdDogc3VjY2Vzc2Z1bFwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHNpZ25pblJlZGlyZWN0Q2FsbGJhY2sodXJsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbkVuZCh1cmwgfHwgdGhpcy5fcmVkaXJlY3ROYXZpZ2F0b3IudXJsKS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXIucHJvZmlsZSAmJiB1c2VyLnByb2ZpbGUuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5SZWRpcmVjdENhbGxiYWNrOiBzdWNjZXNzZnVsLCBzaWduZWQgaW4gc3ViOiBcIiwgdXNlci5wcm9maWxlLnN1Yik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblJlZGlyZWN0Q2FsbGJhY2s6IG5vIHN1YlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2lnbmluUG9wdXAoYXJncyA9IHt9KSB7XHJcbiAgICAgICAgbGV0IHVybCA9IGFyZ3MucmVkaXJlY3RfdXJpIHx8IHRoaXMuc2V0dGluZ3MucG9wdXBfcmVkaXJlY3RfdXJpIHx8IHRoaXMuc2V0dGluZ3MucmVkaXJlY3RfdXJpO1xyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwOiBObyBwb3B1cF9yZWRpcmVjdF91cmkgb3IgcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBwb3B1cF9yZWRpcmVjdF91cmkgb3IgcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXJncy5yZWRpcmVjdF91cmkgPSB1cmw7XHJcbiAgICAgICAgYXJncy5kaXNwbGF5ID0gXCJwb3B1cFwiO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmluKGFyZ3MsIHRoaXMuX3BvcHVwTmF2aWdhdG9yLCB7XHJcbiAgICAgICAgICAgIHN0YXJ0VXJsOiB1cmwsXHJcbiAgICAgICAgICAgIHBvcHVwV2luZG93RmVhdHVyZXM6IGFyZ3MucG9wdXBXaW5kb3dGZWF0dXJlcyB8fCB0aGlzLnNldHRpbmdzLnBvcHVwV2luZG93RmVhdHVyZXMsXHJcbiAgICAgICAgICAgIHBvcHVwV2luZG93VGFyZ2V0OiBhcmdzLnBvcHVwV2luZG93VGFyZ2V0IHx8IHRoaXMuc2V0dGluZ3MucG9wdXBXaW5kb3dUYXJnZXRcclxuICAgICAgICB9KS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXIucHJvZmlsZSAmJiB1c2VyLnByb2ZpbGUuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5Qb3B1cDogc2lnbmluUG9wdXAgc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5Qb3B1cDogbm8gc3ViXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHNpZ25pblBvcHVwQ2FsbGJhY2sodXJsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbkNhbGxiYWNrKHVybCwgdGhpcy5fcG9wdXBOYXZpZ2F0b3IpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlci5wcm9maWxlICYmIHVzZXIucHJvZmlsZS5zdWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwQ2FsbGJhY2s6IHN1Y2Nlc3NmdWwsIHNpZ25lZCBpbiBzdWI6IFwiLCB1c2VyLnByb2ZpbGUuc3ViKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIuc2lnbmluUG9wdXBDYWxsYmFjazogbm8gc3ViXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KS5jYXRjaChlcnI9PntcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuc2lnbmluUG9wdXBDYWxsYmFjayBlcnJvcjogXCIgKyBlcnIgJiYgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNpZ25pblNpbGVudChhcmdzID0ge30pIHtcclxuICAgICAgICAvLyBmaXJzdCBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIHJlZnJlc2ggdG9rZW4sIG9yIG5lZWQgdG8gdXNlIGlmcmFtZVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1c2VyICYmIHVzZXIucmVmcmVzaF90b2tlbikge1xyXG4gICAgICAgICAgICAgICAgYXJncy5yZWZyZXNoX3Rva2VuID0gdXNlci5yZWZyZXNoX3Rva2VuO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZVJlZnJlc2hUb2tlbihhcmdzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFyZ3MuaWRfdG9rZW5faGludCA9IGFyZ3MuaWRfdG9rZW5faGludCB8fCAodGhpcy5zZXR0aW5ncy5pbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXcgJiYgdXNlciAmJiB1c2VyLmlkX3Rva2VuKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5TaWxlbnRJZnJhbWUoYXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfdXNlUmVmcmVzaFRva2VuKGFyZ3MgPSB7fSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbkNsaWVudC5leGNoYW5nZVJlZnJlc2hUb2tlbihhcmdzKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5fdXNlUmVmcmVzaFRva2VuOiBObyByZXNwb25zZSByZXR1cm5lZCBmcm9tIHRva2VuIGVuZHBvaW50XCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZnJvbSB0b2tlbiBlbmRwb2ludFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5hY2Nlc3NfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl91c2VSZWZyZXNoVG9rZW46IE5vIGFjY2VzcyB0b2tlbiByZXR1cm5lZCBmcm9tIHRva2VuIGVuZHBvaW50XCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwiTm8gYWNjZXNzIHRva2VuIHJldHVybmVkIGZyb20gdG9rZW4gZW5kcG9pbnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpZFRva2VuVmFsaWRhdGlvbiA9IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaWRfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRUb2tlblZhbGlkYXRpb24gPSB0aGlzLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW4odXNlci5wcm9maWxlLCByZXN1bHQuaWRfdG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkVG9rZW5WYWxpZGF0aW9uLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fdXNlUmVmcmVzaFRva2VuOiByZWZyZXNoIHRva2VuIHJlc3BvbnNlIHN1Y2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gcmVzdWx0LmFjY2Vzc190b2tlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5yZWZyZXNoX3Rva2VuID0gcmVzdWx0LnJlZnJlc2hfdG9rZW4gfHwgdXNlci5yZWZyZXNoX3Rva2VuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyLmV4cGlyZXNfaW4gPSByZXN1bHQuZXhwaXJlc19pbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlVXNlcih1c2VyKS50aGVuKCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMubG9hZCh1c2VyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuKHByb2ZpbGUsIGlkX3Rva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRJc3N1ZXIoKS50aGVuKGlzc3VlciA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9qb3NlVXRpbC52YWxpZGF0ZUp3dEF0dHJpYnV0ZXMoaWRfdG9rZW4sIGlzc3VlciwgdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkLCB0aGlzLl9zZXR0aW5ncy5jbG9ja1NrZXcpLnRoZW4ocGF5bG9hZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5fdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuOiBGYWlsZWQgdG8gdmFsaWRhdGUgaWRfdG9rZW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byB2YWxpZGF0ZSBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5zdWIgIT09IHByb2ZpbGUuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuX3ZhbGlkYXRlSWRUb2tlbkZyb21Ub2tlblJlZnJlc2hUb2tlbjogc3ViIGluIGlkX3Rva2VuIGRvZXMgbm90IG1hdGNoIGN1cnJlbnQgc3ViXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJzdWIgaW4gaWRfdG9rZW4gZG9lcyBub3QgbWF0Y2ggY3VycmVudCBzdWJcIikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYXV0aF90aW1lICYmIHBheWxvYWQuYXV0aF90aW1lICE9PSBwcm9maWxlLmF1dGhfdGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW46IGF1dGhfdGltZSBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhdXRoX3RpbWVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImF1dGhfdGltZSBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhdXRoX3RpbWVcIikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYXpwICYmIHBheWxvYWQuYXpwICE9PSBwcm9maWxlLmF6cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW46IGF6cCBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhenBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImF6cCBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhenBcIikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmF6cCAmJiBwcm9maWxlLmF6cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW46IGF6cCBub3QgaW4gaWRfdG9rZW4sIGJ1dCBwcmVzZW50IGluIG9yaWdpbmFsIGlkX3Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJhenAgbm90IGluIGlkX3Rva2VuLCBidXQgcHJlc2VudCBpbiBvcmlnaW5hbCBpZF90b2tlblwiKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfc2lnbmluU2lsZW50SWZyYW1lKGFyZ3MgPSB7fSkge1xyXG4gICAgICAgIGxldCB1cmwgPSBhcmdzLnJlZGlyZWN0X3VyaSB8fCB0aGlzLnNldHRpbmdzLnNpbGVudF9yZWRpcmVjdF91cmk7XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuc2lnbmluU2lsZW50OiBObyBzaWxlbnRfcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBzaWxlbnRfcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXJncy5yZWRpcmVjdF91cmkgPSB1cmw7XHJcbiAgICAgICAgYXJncy5wcm9tcHQgPSBhcmdzLnByb21wdCB8fCBcIm5vbmVcIjtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbihhcmdzLCB0aGlzLl9pZnJhbWVOYXZpZ2F0b3IsIHtcclxuICAgICAgICAgICAgc3RhcnRVcmw6IHVybCxcclxuICAgICAgICAgICAgc2lsZW50UmVxdWVzdFRpbWVvdXQ6IGFyZ3Muc2lsZW50UmVxdWVzdFRpbWVvdXQgfHwgdGhpcy5zZXR0aW5ncy5zaWxlbnRSZXF1ZXN0VGltZW91dFxyXG4gICAgICAgIH0pLnRoZW4odXNlciA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlci5wcm9maWxlICYmIHVzZXIucHJvZmlsZS5zdWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblNpbGVudDogc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnQ6IG5vIHN1YlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2lnbmluU2lsZW50Q2FsbGJhY2sodXJsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbkNhbGxiYWNrKHVybCwgdGhpcy5faWZyYW1lTmF2aWdhdG9yKS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXIucHJvZmlsZSAmJiB1c2VyLnByb2ZpbGUuc3ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjazogc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjazogbm8gc3ViXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBxdWVyeVNlc3Npb25TdGF0dXMoYXJncyA9IHt9KSB7XHJcbiAgICAgICAgbGV0IHVybCA9IGFyZ3MucmVkaXJlY3RfdXJpIHx8IHRoaXMuc2V0dGluZ3Muc2lsZW50X3JlZGlyZWN0X3VyaTtcclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5xdWVyeVNlc3Npb25TdGF0dXM6IE5vIHNpbGVudF9yZWRpcmVjdF91cmkgY29uZmlndXJlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHNpbGVudF9yZWRpcmVjdF91cmkgY29uZmlndXJlZFwiKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhcmdzLnJlZGlyZWN0X3VyaSA9IHVybDtcclxuICAgICAgICBhcmdzLnByb21wdCA9IFwibm9uZVwiO1xyXG4gICAgICAgIGFyZ3MucmVzcG9uc2VfdHlwZSA9IGFyZ3MucmVzcG9uc2VfdHlwZSB8fCB0aGlzLnNldHRpbmdzLnF1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlO1xyXG4gICAgICAgIGFyZ3Muc2NvcGUgPSBcIm9wZW5pZFwiO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmluU3RhcnQoYXJncywgdGhpcy5faWZyYW1lTmF2aWdhdG9yLCB7XHJcbiAgICAgICAgICAgIHN0YXJ0VXJsOiB1cmwsXHJcbiAgICAgICAgICAgIHNpbGVudFJlcXVlc3RUaW1lb3V0OiBhcmdzLnNpbGVudFJlcXVlc3RUaW1lb3V0IHx8IHRoaXMuc2V0dGluZ3Muc2lsZW50UmVxdWVzdFRpbWVvdXRcclxuICAgICAgICB9KS50aGVuKG5hdlJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NpZ25pblJlc3BvbnNlKG5hdlJlc3BvbnNlLnVybCkudGhlbihzaWduaW5SZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5xdWVyeVNlc3Npb25TdGF0dXM6IGdvdCBzaWduaW4gcmVzcG9uc2VcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHNpZ25pblJlc3BvbnNlLnNlc3Npb25fc3RhdGUgJiYgc2lnbmluUmVzcG9uc2UucHJvZmlsZS5zdWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnF1ZXJ5U2Vzc2lvblN0YXR1czogcXVlcnlTZXNzaW9uU3RhdHVzIHN1Y2Nlc3MgZm9yIHN1YjogXCIsICBzaWduaW5SZXNwb25zZS5wcm9maWxlLnN1Yik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9zdGF0ZTogc2lnbmluUmVzcG9uc2Uuc2Vzc2lvbl9zdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViOiBzaWduaW5SZXNwb25zZS5wcm9maWxlLnN1YixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2lkOiBzaWduaW5SZXNwb25zZS5wcm9maWxlLnNpZFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcInF1ZXJ5U2Vzc2lvblN0YXR1cyBzdWNjZXNzZnVsLCB1c2VyIG5vdCBhdXRoZW50aWNhdGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfc2lnbmluKGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmluU3RhcnQoYXJncywgbmF2aWdhdG9yLCBuYXZpZ2F0b3JQYXJhbXMpLnRoZW4obmF2UmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmluRW5kKG5hdlJlc3BvbnNlLnVybCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfc2lnbmluU3RhcnQoYXJncywgbmF2aWdhdG9yLCBuYXZpZ2F0b3JQYXJhbXMgPSB7fSkge1xyXG5cclxuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnByZXBhcmUobmF2aWdhdG9yUGFyYW1zKS50aGVuKGhhbmRsZSA9PiB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWduaW5TdGFydDogZ290IG5hdmlnYXRvciB3aW5kb3cgaGFuZGxlXCIpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2lnbmluUmVxdWVzdChhcmdzKS50aGVuKHNpZ25pblJlcXVlc3QgPT4ge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pblN0YXJ0OiBnb3Qgc2lnbmluIHJlcXVlc3RcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yUGFyYW1zLnVybCA9IHNpZ25pblJlcXVlc3QudXJsO1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yUGFyYW1zLmlkID0gc2lnbmluUmVxdWVzdC5zdGF0ZS5pZDtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlLm5hdmlnYXRlKG5hdmlnYXRvclBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlLmNsb3NlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pblN0YXJ0OiBFcnJvciBhZnRlciBwcmVwYXJpbmcgbmF2aWdhdG9yLCBjbG9zaW5nIG5hdmlnYXRvciB3aW5kb3dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX3NpZ25pbkVuZCh1cmwpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2lnbmluUmVzcG9uc2UodXJsKS50aGVuKHNpZ25pblJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pbkVuZDogZ290IHNpZ25pbiByZXNwb25zZVwiKTtcclxuXHJcbiAgICAgICAgICAgIGxldCB1c2VyID0gbmV3IFVzZXIoc2lnbmluUmVzcG9uc2UpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVVc2VyKHVzZXIpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pbkVuZDogdXNlciBzdG9yZWRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmxvYWQodXNlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX3NpZ25pbkNhbGxiYWNrKHVybCwgbmF2aWdhdG9yKSB7XHJcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pbkNhbGxiYWNrXCIpO1xyXG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY2FsbGJhY2sodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBzaWdub3V0UmVkaXJlY3QoYXJncyA9IHt9KSB7XHJcbiAgICAgICAgbGV0IHBvc3RMb2dvdXRSZWRpcmVjdFVyaSA9IGFyZ3MucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpIHx8IHRoaXMuc2V0dGluZ3MucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpO1xyXG4gICAgICAgIGlmIChwb3N0TG9nb3V0UmVkaXJlY3RVcmkpe1xyXG4gICAgICAgICAgICBhcmdzLnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSA9IHBvc3RMb2dvdXRSZWRpcmVjdFVyaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25vdXRTdGFydChhcmdzLCB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvcikudGhlbigoKT0+e1xyXG4gICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25vdXRSZWRpcmVjdDogc3VjY2Vzc2Z1bFwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHNpZ25vdXRSZWRpcmVjdENhbGxiYWNrKHVybCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWdub3V0RW5kKHVybCB8fCB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvci51cmwpLnRoZW4ocmVzcG9uc2U9PntcclxuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWdub3V0UmVkaXJlY3RDYWxsYmFjazogc3VjY2Vzc2Z1bFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNpZ25vdXRQb3B1cChhcmdzID0ge30pIHtcclxuICAgICAgICBsZXQgdXJsID0gYXJncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5zZXR0aW5ncy5wb3B1cF9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5zZXR0aW5ncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmk7XHJcbiAgICAgICAgYXJncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgPSB1cmw7XHJcbiAgICAgICAgYXJncy5kaXNwbGF5ID0gXCJwb3B1cFwiO1xyXG4gICAgICAgIGlmIChhcmdzLnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSl7XHJcbiAgICAgICAgICAgIC8vIHdlJ3JlIHB1dHRpbmcgYSBkdW1teSBlbnRyeSBpbiBoZXJlIGJlY2F1c2Ugd2VcclxuICAgICAgICAgICAgLy8gbmVlZCBhIHVuaXF1ZSBpZCBmcm9tIHRoZSBzdGF0ZSBmb3Igbm90aWZpY2F0aW9uXHJcbiAgICAgICAgICAgIC8vIHRvIHRoZSBwYXJlbnQgd2luZG93LCB3aGljaCBpcyBuZWNlc3NhcnkgaWYgd2VcclxuICAgICAgICAgICAgLy8gcGxhbiB0byByZXR1cm4gYmFjayB0byB0aGUgY2xpZW50IGFmdGVyIHNpZ25vdXRcclxuICAgICAgICAgICAgLy8gYW5kIHNvIHdlIGNhbiBjbG9zZSB0aGUgcG9wdXAgYWZ0ZXIgc2lnbm91dFxyXG4gICAgICAgICAgICBhcmdzLnN0YXRlID0gYXJncy5zdGF0ZSB8fCB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWdub3V0KGFyZ3MsIHRoaXMuX3BvcHVwTmF2aWdhdG9yLCB7XHJcbiAgICAgICAgICAgIHN0YXJ0VXJsOiB1cmwsXHJcbiAgICAgICAgICAgIHBvcHVwV2luZG93RmVhdHVyZXM6IGFyZ3MucG9wdXBXaW5kb3dGZWF0dXJlcyB8fCB0aGlzLnNldHRpbmdzLnBvcHVwV2luZG93RmVhdHVyZXMsXHJcbiAgICAgICAgICAgIHBvcHVwV2luZG93VGFyZ2V0OiBhcmdzLnBvcHVwV2luZG93VGFyZ2V0IHx8IHRoaXMuc2V0dGluZ3MucG9wdXBXaW5kb3dUYXJnZXRcclxuICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWdub3V0UG9wdXA6IHN1Y2Nlc3NmdWxcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBzaWdub3V0UG9wdXBDYWxsYmFjayh1cmwsIGtlZXBPcGVuKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihrZWVwT3BlbikgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZih1cmwpID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAga2VlcE9wZW4gPSB1cmw7XHJcbiAgICAgICAgICAgIHVybCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZGVsaW1pdGVyID0gJz8nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wb3B1cE5hdmlnYXRvci5jYWxsYmFjayh1cmwsIGtlZXBPcGVuLCBkZWxpbWl0ZXIpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25vdXRQb3B1cENhbGxiYWNrOiBzdWNjZXNzZnVsXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF9zaWdub3V0KGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbm91dFN0YXJ0KGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zKS50aGVuKG5hdlJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25vdXRFbmQobmF2UmVzcG9uc2UudXJsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIF9zaWdub3V0U3RhcnQoYXJncyA9IHt9LCBuYXZpZ2F0b3IsIG5hdmlnYXRvclBhcmFtcyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5wcmVwYXJlKG5hdmlnYXRvclBhcmFtcykudGhlbihoYW5kbGUgPT4ge1xyXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBnb3QgbmF2aWdhdG9yIHdpbmRvdyBoYW5kbGVcIik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFVzZXIoKS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25vdXRTdGFydDogbG9hZGVkIGN1cnJlbnQgdXNlciBmcm9tIHN0b3JhZ2VcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJldm9rZVByb21pc2UgPSB0aGlzLl9zZXR0aW5ncy5yZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCA/IHRoaXMuX3Jldm9rZUludGVybmFsKHVzZXIpIDogUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV2b2tlUHJvbWlzZS50aGVuKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkX3Rva2VuID0gYXJncy5pZF90b2tlbl9oaW50IHx8IHVzZXIgJiYgdXNlci5pZF90b2tlbjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaWRfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25vdXRTdGFydDogU2V0dGluZyBpZF90b2tlbiBpbnRvIHNpZ25vdXQgcmVxdWVzdFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5pZF90b2tlbl9oaW50ID0gaWRfdG9rZW47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVVc2VyKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWdub3V0U3RhcnQ6IHVzZXIgcmVtb3ZlZCwgY3JlYXRpbmcgc2lnbm91dCByZXF1ZXN0XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2lnbm91dFJlcXVlc3QoYXJncykudGhlbihzaWdub3V0UmVxdWVzdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBnb3Qgc2lnbm91dCByZXF1ZXN0XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvclBhcmFtcy51cmwgPSBzaWdub3V0UmVxdWVzdC51cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbm91dFJlcXVlc3Quc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3JQYXJhbXMuaWQgPSBzaWdub3V0UmVxdWVzdC5zdGF0ZS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUubmF2aWdhdGUobmF2aWdhdG9yUGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChoYW5kbGUuY2xvc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBFcnJvciBhZnRlciBwcmVwYXJpbmcgbmF2aWdhdG9yLCBjbG9zaW5nIG5hdmlnYXRvciB3aW5kb3dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX3NpZ25vdXRFbmQodXJsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NpZ25vdXRSZXNwb25zZSh1cmwpLnRoZW4oc2lnbm91dFJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25vdXRFbmQ6IGdvdCBzaWdub3V0IHJlc3BvbnNlXCIpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHNpZ25vdXRSZXNwb25zZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXZva2VBY2Nlc3NUb2tlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFVzZXIoKS50aGVuKHVzZXIgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmV2b2tlSW50ZXJuYWwodXNlciwgdHJ1ZSkudGhlbihzdWNjZXNzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW46IHJlbW92aW5nIHRva2VuIHByb3BlcnRpZXMgZnJvbSB1c2VyIGFuZCByZS1zdG9yaW5nXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmFjY2Vzc190b2tlbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5yZWZyZXNoX3Rva2VuID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmV4cGlyZXNfYXQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIudG9rZW5fdHlwZSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlVXNlcih1c2VyKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW46IHVzZXIgc3RvcmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMubG9hZCh1c2VyKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkudGhlbigoKT0+e1xyXG4gICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuOiBhY2Nlc3MgdG9rZW4gcmV2b2tlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3Jldm9rZUludGVybmFsKHVzZXIsIHJlcXVpcmVkKSB7XHJcbiAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgdmFyIGFjY2Vzc190b2tlbiA9IHVzZXIuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICB2YXIgcmVmcmVzaF90b2tlbiA9IHVzZXIucmVmcmVzaF90b2tlbjtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbkludGVybmFsKGFjY2Vzc190b2tlbiwgcmVxdWlyZSlcclxuICAgICAgICAgICAgICAgIC50aGVuKGF0U3VjY2VzcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jldm9rZVJlZnJlc2hUb2tlbkludGVybmFsKHJlZnJlc2hfdG9rZW4sIHJlcXVpcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihydFN1Y2Nlc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdFN1Y2Nlc3MgJiYgIXJ0U3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuOiBubyBuZWVkIHRvIHJldm9rZSBkdWUgdG8gbm8gdG9rZW4ocyksIG9yIEpXVCBmb3JtYXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdFN1Y2Nlc3MgfHwgcnRTdWNjZXNzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3Jldm9rZUFjY2Vzc1Rva2VuSW50ZXJuYWwoYWNjZXNzX3Rva2VuLCByZXF1aXJlZCkge1xyXG4gICAgICAgIC8vIGNoZWNrIGZvciBKV1QgdnMuIHJlZmVyZW5jZSB0b2tlblxyXG4gICAgICAgIGlmICghYWNjZXNzX3Rva2VuIHx8IGFjY2Vzc190b2tlbi5pbmRleE9mKCcuJykgPj0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlblJldm9jYXRpb25DbGllbnQucmV2b2tlKGFjY2Vzc190b2tlbiwgcmVxdWlyZWQpLnRoZW4oKCkgPT4gdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3Jldm9rZVJlZnJlc2hUb2tlbkludGVybmFsKHJlZnJlc2hfdG9rZW4sIHJlcXVpcmVkKSB7XHJcbiAgICAgICAgaWYgKCFyZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuUmV2b2NhdGlvbkNsaWVudC5yZXZva2UocmVmcmVzaF90b2tlbiwgcmVxdWlyZWQsIFwicmVmcmVzaF90b2tlblwiKS50aGVuKCgpID0+IHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0U2lsZW50UmVuZXcoKSB7XHJcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFNpbGVudFJlbmV3KCkge1xyXG4gICAgICAgIHRoaXMuX3NpbGVudFJlbmV3U2VydmljZS5zdG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IF91c2VyU3RvcmVLZXkoKSB7XHJcbiAgICAgICAgcmV0dXJuIGB1c2VyOiR7dGhpcy5zZXR0aW5ncy5hdXRob3JpdHl9OiR7dGhpcy5zZXR0aW5ncy5jbGllbnRfaWR9YDtcclxuICAgIH1cclxuXHJcbiAgICBfbG9hZFVzZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTdG9yZS5nZXQodGhpcy5fdXNlclN0b3JlS2V5KS50aGVuKHN0b3JhZ2VTdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc3RvcmFnZVN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX2xvYWRVc2VyOiB1c2VyIHN0b3JhZ2VTdHJpbmcgbG9hZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFVzZXIuZnJvbVN0b3JhZ2VTdHJpbmcoc3RvcmFnZVN0cmluZyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9sb2FkVXNlcjogbm8gdXNlciBzdG9yYWdlU3RyaW5nXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9yZVVzZXIodXNlcikge1xyXG4gICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLnN0b3JlVXNlcjogc3RvcmluZyB1c2VyXCIpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHN0b3JhZ2VTdHJpbmcgPSB1c2VyLnRvU3RvcmFnZVN0cmluZygpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlclN0b3JlLnNldCh0aGlzLl91c2VyU3RvcmVLZXksIHN0b3JhZ2VTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgTG9nLmRlYnVnKFwic3RvcmVVc2VyLnN0b3JlVXNlcjogcmVtb3ZpbmcgdXNlclwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTdG9yZS5yZW1vdmUodGhpcy5fdXNlclN0b3JlS2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkV2ZW50cyB9IGZyb20gJy4vQWNjZXNzVG9rZW5FdmVudHMnO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJNYW5hZ2VyRXZlbnRzIGV4dGVuZHMgQWNjZXNzVG9rZW5FdmVudHMge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHNldHRpbmdzKSB7XHJcbiAgICAgICAgc3VwZXIoc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuX3VzZXJMb2FkZWQgPSBuZXcgRXZlbnQoXCJVc2VyIGxvYWRlZFwiKTtcclxuICAgICAgICB0aGlzLl91c2VyVW5sb2FkZWQgPSBuZXcgRXZlbnQoXCJVc2VyIHVubG9hZGVkXCIpO1xyXG4gICAgICAgIHRoaXMuX3NpbGVudFJlbmV3RXJyb3IgPSBuZXcgRXZlbnQoXCJTaWxlbnQgcmVuZXcgZXJyb3JcIik7XHJcbiAgICAgICAgdGhpcy5fdXNlclNpZ25lZE91dCA9IG5ldyBFdmVudChcIlVzZXIgc2lnbmVkIG91dFwiKTtcclxuICAgICAgICB0aGlzLl91c2VyU2Vzc2lvbkNoYW5nZWQgPSBuZXcgRXZlbnQoXCJVc2VyIHNlc3Npb24gY2hhbmdlZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkKHVzZXIsIHJhaXNlRXZlbnQ9dHJ1ZSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyRXZlbnRzLmxvYWRcIik7XHJcbiAgICAgICAgc3VwZXIubG9hZCh1c2VyKTtcclxuICAgICAgICBpZiAocmFpc2VFdmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VyTG9hZGVkLnJhaXNlKHVzZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHVubG9hZCgpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlckV2ZW50cy51bmxvYWRcIik7XHJcbiAgICAgICAgc3VwZXIudW5sb2FkKCk7XHJcbiAgICAgICAgdGhpcy5fdXNlclVubG9hZGVkLnJhaXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVXNlckxvYWRlZChjYikge1xyXG4gICAgICAgIHRoaXMuX3VzZXJMb2FkZWQuYWRkSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVVc2VyTG9hZGVkKGNiKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlckxvYWRlZC5yZW1vdmVIYW5kbGVyKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRVc2VyVW5sb2FkZWQoY2IpIHtcclxuICAgICAgICB0aGlzLl91c2VyVW5sb2FkZWQuYWRkSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVVc2VyVW5sb2FkZWQoY2IpIHtcclxuICAgICAgICB0aGlzLl91c2VyVW5sb2FkZWQucmVtb3ZlSGFuZGxlcihjYik7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkU2lsZW50UmVuZXdFcnJvcihjYikge1xyXG4gICAgICAgIHRoaXMuX3NpbGVudFJlbmV3RXJyb3IuYWRkSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVTaWxlbnRSZW5ld0Vycm9yKGNiKSB7XHJcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdFcnJvci5yZW1vdmVIYW5kbGVyKGNiKTtcclxuICAgIH1cclxuICAgIF9yYWlzZVNpbGVudFJlbmV3RXJyb3IoZSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyRXZlbnRzLl9yYWlzZVNpbGVudFJlbmV3RXJyb3JcIiwgZS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLl9zaWxlbnRSZW5ld0Vycm9yLnJhaXNlKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFVzZXJTaWduZWRPdXQoY2IpIHtcclxuICAgICAgICB0aGlzLl91c2VyU2lnbmVkT3V0LmFkZEhhbmRsZXIoY2IpO1xyXG4gICAgfVxyXG4gICAgcmVtb3ZlVXNlclNpZ25lZE91dChjYikge1xyXG4gICAgICAgIHRoaXMuX3VzZXJTaWduZWRPdXQucmVtb3ZlSGFuZGxlcihjYik7XHJcbiAgICB9XHJcbiAgICBfcmFpc2VVc2VyU2lnbmVkT3V0KGUpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlckV2ZW50cy5fcmFpc2VVc2VyU2lnbmVkT3V0XCIpO1xyXG4gICAgICAgIHRoaXMuX3VzZXJTaWduZWRPdXQucmFpc2UoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVXNlclNlc3Npb25DaGFuZ2VkKGNiKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkLmFkZEhhbmRsZXIoY2IpO1xyXG4gICAgfVxyXG4gICAgcmVtb3ZlVXNlclNlc3Npb25DaGFuZ2VkKGNiKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkLnJlbW92ZUhhbmRsZXIoY2IpO1xyXG4gICAgfVxyXG4gICAgX3JhaXNlVXNlclNlc3Npb25DaGFuZ2VkKGUpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlckV2ZW50cy5fcmFpc2VVc2VyU2Vzc2lvbkNoYW5nZWRcIik7XHJcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkLnJhaXNlKGUpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuXHJcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nJztcclxuaW1wb3J0IHsgT2lkY0NsaWVudFNldHRpbmdzIH0gZnJvbSAnLi9PaWRjQ2xpZW50U2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBSZWRpcmVjdE5hdmlnYXRvciB9IGZyb20gJy4vUmVkaXJlY3ROYXZpZ2F0b3InO1xyXG5pbXBvcnQgeyBQb3B1cE5hdmlnYXRvciB9IGZyb20gJy4vUG9wdXBOYXZpZ2F0b3InO1xyXG5pbXBvcnQgeyBJRnJhbWVOYXZpZ2F0b3IgfSBmcm9tICcuL0lGcmFtZU5hdmlnYXRvcic7XHJcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9XZWJTdG9yYWdlU3RhdGVTdG9yZSc7XHJcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vR2xvYmFsJztcclxuXHJcbmNvbnN0IERlZmF1bHRBY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IDYwO1xyXG5jb25zdCBEZWZhdWx0Q2hlY2tTZXNzaW9uSW50ZXJ2YWwgPSAyMDAwO1xyXG5jb25zdCBEZWZhdWx0UXVlcnlTZXNzaW9uU3RhdHVzUmVzcG9uc2VUeXBlID0gXCJpZF90b2tlblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJNYW5hZ2VyU2V0dGluZ3MgZXh0ZW5kcyBPaWRjQ2xpZW50U2V0dGluZ3Mge1xyXG4gICAgY29uc3RydWN0b3Ioe1xyXG4gICAgICAgIHBvcHVwX3JlZGlyZWN0X3VyaSxcclxuICAgICAgICBwb3B1cF9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmksXHJcbiAgICAgICAgcG9wdXBXaW5kb3dGZWF0dXJlcyxcclxuICAgICAgICBwb3B1cFdpbmRvd1RhcmdldCxcclxuICAgICAgICBzaWxlbnRfcmVkaXJlY3RfdXJpLFxyXG4gICAgICAgIHNpbGVudFJlcXVlc3RUaW1lb3V0LFxyXG4gICAgICAgIGF1dG9tYXRpY1NpbGVudFJlbmV3ID0gZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZUlkVG9rZW5JblNpbGVudFJlbmV3ID0gdHJ1ZSxcclxuICAgICAgICBtb25pdG9yU2Vzc2lvbiA9IHRydWUsXHJcbiAgICAgICAgY2hlY2tTZXNzaW9uSW50ZXJ2YWwgPSBEZWZhdWx0Q2hlY2tTZXNzaW9uSW50ZXJ2YWwsXHJcbiAgICAgICAgc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IgPSB0cnVlLFxyXG4gICAgICAgIHF1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlID0gRGVmYXVsdFF1ZXJ5U2Vzc2lvblN0YXR1c1Jlc3BvbnNlVHlwZSxcclxuICAgICAgICByZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCA9IGZhbHNlLFxyXG4gICAgICAgIGFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lID0gRGVmYXVsdEFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lLFxyXG4gICAgICAgIHJlZGlyZWN0TmF2aWdhdG9yID0gbmV3IFJlZGlyZWN0TmF2aWdhdG9yKCksXHJcbiAgICAgICAgcG9wdXBOYXZpZ2F0b3IgPSBuZXcgUG9wdXBOYXZpZ2F0b3IoKSxcclxuICAgICAgICBpZnJhbWVOYXZpZ2F0b3IgPSBuZXcgSUZyYW1lTmF2aWdhdG9yKCksXHJcbiAgICAgICAgdXNlclN0b3JlID0gbmV3IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlKHsgc3RvcmU6IEdsb2JhbC5zZXNzaW9uU3RvcmFnZSB9KVxyXG4gICAgfSA9IHt9KSB7XHJcbiAgICAgICAgc3VwZXIoYXJndW1lbnRzWzBdKTtcclxuXHJcbiAgICAgICAgdGhpcy5fcG9wdXBfcmVkaXJlY3RfdXJpID0gcG9wdXBfcmVkaXJlY3RfdXJpO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSA9IHBvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcclxuICAgICAgICB0aGlzLl9wb3B1cFdpbmRvd0ZlYXR1cmVzID0gcG9wdXBXaW5kb3dGZWF0dXJlcztcclxuICAgICAgICB0aGlzLl9wb3B1cFdpbmRvd1RhcmdldCA9IHBvcHVwV2luZG93VGFyZ2V0O1xyXG5cclxuICAgICAgICB0aGlzLl9zaWxlbnRfcmVkaXJlY3RfdXJpID0gc2lsZW50X3JlZGlyZWN0X3VyaTtcclxuICAgICAgICB0aGlzLl9zaWxlbnRSZXF1ZXN0VGltZW91dCA9IHNpbGVudFJlcXVlc3RUaW1lb3V0O1xyXG4gICAgICAgIHRoaXMuX2F1dG9tYXRpY1NpbGVudFJlbmV3ID0gISFhdXRvbWF0aWNTaWxlbnRSZW5ldztcclxuICAgICAgICB0aGlzLl9pbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXcgPSBpbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXc7XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTtcclxuXHJcbiAgICAgICAgdGhpcy5fbW9uaXRvclNlc3Npb24gPSBtb25pdG9yU2Vzc2lvbjtcclxuICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JbnRlcnZhbCA9IGNoZWNrU2Vzc2lvbkludGVydmFsO1xyXG4gICAgICAgIHRoaXMuX3N0b3BDaGVja1Nlc3Npb25PbkVycm9yID0gc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3I7XHJcbiAgICAgICAgdGhpcy5fcXVlcnlfc3RhdHVzX3Jlc3BvbnNlX3R5cGUgPSBxdWVyeV9zdGF0dXNfcmVzcG9uc2VfdHlwZTtcclxuICAgICAgICB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCA9IHJldm9rZUFjY2Vzc1Rva2VuT25TaWdub3V0O1xyXG5cclxuICAgICAgICB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvciA9IHJlZGlyZWN0TmF2aWdhdG9yO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwTmF2aWdhdG9yID0gcG9wdXBOYXZpZ2F0b3I7XHJcbiAgICAgICAgdGhpcy5faWZyYW1lTmF2aWdhdG9yID0gaWZyYW1lTmF2aWdhdG9yO1xyXG5cclxuICAgICAgICB0aGlzLl91c2VyU3RvcmUgPSB1c2VyU3RvcmU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBvcHVwX3JlZGlyZWN0X3VyaSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9wdXBfcmVkaXJlY3RfdXJpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHBvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9wdXBfcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHBvcHVwV2luZG93RmVhdHVyZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwV2luZG93RmVhdHVyZXM7XHJcbiAgICB9XHJcbiAgICBnZXQgcG9wdXBXaW5kb3dUYXJnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwV2luZG93VGFyZ2V0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzaWxlbnRfcmVkaXJlY3RfdXJpKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWxlbnRfcmVkaXJlY3RfdXJpO1xyXG4gICAgfVxyXG4gICAgIGdldCBzaWxlbnRSZXF1ZXN0VGltZW91dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lsZW50UmVxdWVzdFRpbWVvdXQ7XHJcbiAgICB9XHJcbiAgICBnZXQgYXV0b21hdGljU2lsZW50UmVuZXcoKSB7XHJcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuc2lsZW50X3JlZGlyZWN0X3VyaSAmJiB0aGlzLl9hdXRvbWF0aWNTaWxlbnRSZW5ldyk7XHJcbiAgICB9XHJcbiAgICBnZXQgaW5jbHVkZUlkVG9rZW5JblNpbGVudFJlbmV3KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmNsdWRlSWRUb2tlbkluU2lsZW50UmVuZXc7XHJcbiAgICB9XHJcbiAgICBnZXQgYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtb25pdG9yU2Vzc2lvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbW9uaXRvclNlc3Npb247XHJcbiAgICB9XHJcbiAgICBnZXQgY2hlY2tTZXNzaW9uSW50ZXJ2YWwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrU2Vzc2lvbkludGVydmFsO1xyXG4gICAgfVxyXG4gICAgZ2V0IHN0b3BDaGVja1Nlc3Npb25PbkVycm9yKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3BDaGVja1Nlc3Npb25PbkVycm9yO1xyXG4gICAgfVxyXG4gICAgZ2V0IHF1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHJldm9rZUFjY2Vzc1Rva2VuT25TaWdub3V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcmVkaXJlY3ROYXZpZ2F0b3IoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZGlyZWN0TmF2aWdhdG9yO1xyXG4gICAgfVxyXG4gICAgZ2V0IHBvcHVwTmF2aWdhdG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wb3B1cE5hdmlnYXRvcjtcclxuICAgIH1cclxuICAgIGdldCBpZnJhbWVOYXZpZ2F0b3IoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lmcmFtZU5hdmlnYXRvcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXNlclN0b3JlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU3RvcmU7XHJcbiAgICB9XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG5cclxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cnO1xyXG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgV2ViU3RvcmFnZVN0YXRlU3RvcmUge1xyXG4gICAgY29uc3RydWN0b3Ioe3ByZWZpeCA9IFwib2lkYy5cIiwgc3RvcmUgPSBHbG9iYWwubG9jYWxTdG9yYWdlfSA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5fc3RvcmUgPSBzdG9yZTtcclxuICAgICAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJXZWJTdG9yYWdlU3RhdGVTdG9yZS5zZXRcIiwga2V5KTtcclxuXHJcbiAgICAgICAga2V5ID0gdGhpcy5fcHJlZml4ICsga2V5O1xyXG5cclxuICAgICAgICB0aGlzLl9zdG9yZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGtleSkge1xyXG4gICAgICAgIExvZy5kZWJ1ZyhcIldlYlN0b3JhZ2VTdGF0ZVN0b3JlLmdldFwiLCBrZXkpO1xyXG5cclxuICAgICAgICBrZXkgPSB0aGlzLl9wcmVmaXggKyBrZXk7XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5fc3RvcmUuZ2V0SXRlbShrZXkpO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZShrZXkpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJXZWJTdG9yYWdlU3RhdGVTdG9yZS5yZW1vdmVcIiwga2V5KTtcclxuXHJcbiAgICAgICAga2V5ID0gdGhpcy5fcHJlZml4ICsga2V5O1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMuX3N0b3JlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICB0aGlzLl9zdG9yZS5yZW1vdmVJdGVtKGtleSk7XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsS2V5cygpIHtcclxuICAgICAgICBMb2cuZGVidWcoXCJXZWJTdG9yYWdlU3RhdGVTdG9yZS5nZXRBbGxLZXlzXCIpO1xyXG5cclxuICAgICAgICB2YXIga2V5cyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fc3RvcmUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLl9zdG9yZS5rZXkoaW5kZXgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKHRoaXMuX3ByZWZpeCkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkuc3Vic3RyKHRoaXMuX3ByZWZpeC5sZW5ndGgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShrZXlzKTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBOT1RJQ0U6IHRoZSBjb2RlIGluIHRoaXMgZmlsZSBvcmlnaW5hbGx5IGRldmVsb3BlZCBieSBNaWNyb3NvZnRcclxuLy8gb3JpZ2luYWwgc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmVBRC9henVyZS1hY3RpdmVkaXJlY3RvcnktbGlicmFyeS1mb3ItanMvYmxvYi9tYXN0ZXIvbGliL2FkYWwuanMjTDEwMjlcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEFkYWxKUyB2MS4wLjhcclxuLy8gQHByZXNlcnZlIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IE9wZW4gVGVjaG5vbG9naWVzLCBJbmMuXHJcbi8vIEFsbCBSaWdodHMgUmVzZXJ2ZWRcclxuLy8gQXBhY2hlIExpY2Vuc2UgMi4wXHJcbi8vXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbi8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbi8vXHJcbi8vIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4vL1xyXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmFuZG9tKCkge1xyXG4gICAgdmFyIGd1aWRIb2xkZXIgPSAneHh4eHh4eHh4eHh4NHh4eHl4eHh4eHh4eHh4eHh4eHgnO1xyXG4gICAgdmFyIGhleCA9ICcwMTIzNDU2Nzg5YWJjZGVmJztcclxuICAgIHZhciByID0gMDtcclxuICAgIHZhciBndWlkUmVzcG9uc2UgPSBcIlwiO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndWlkSG9sZGVyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGd1aWRIb2xkZXJbaV0gIT09ICctJyAmJiBndWlkSG9sZGVyW2ldICE9PSAnNCcpIHtcclxuICAgICAgICAgICAgLy8gZWFjaCB4IGFuZCB5IG5lZWRzIHRvIGJlIHJhbmRvbVxyXG4gICAgICAgICAgICByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChndWlkSG9sZGVyW2ldID09PSAneCcpIHtcclxuICAgICAgICAgICAgZ3VpZFJlc3BvbnNlICs9IGhleFtyXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGd1aWRIb2xkZXJbaV0gPT09ICd5Jykge1xyXG4gICAgICAgICAgICAvLyBjbG9jay1zZXEtYW5kLXJlc2VydmVkIGZpcnN0IGhleCBpcyBmaWx0ZXJlZCBhbmQgcmVtYWluaW5nIGhleCB2YWx1ZXMgYXJlIHJhbmRvbVxyXG4gICAgICAgICAgICByICY9IDB4MzsgLy8gYml0IGFuZCB3aXRoIDAwMTEgdG8gc2V0IHBvcyAyIHRvIHplcm8gPzA/P1xyXG4gICAgICAgICAgICByIHw9IDB4ODsgLy8gc2V0IHBvcyAzIHRvIDEgYXMgMT8/P1xyXG4gICAgICAgICAgICBndWlkUmVzcG9uc2UgKz0gaGV4W3JdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGd1aWRSZXNwb25zZSArPSBndWlkSG9sZGVyW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBndWlkUmVzcG9uc2U7XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9PaWRjL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL09pZGMvLi9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vanNyc2FzaWduL2Rpc3QvanNyc2FzaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbGliL2luZGV4LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvYmFiZWwtcG9seWZpbGwvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vcmVnZXhwL2VzY2FwZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1udW1iZXItdmFsdWUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktY29weS13aXRoaW4uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19iaW5kLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jdHguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19lbnVtLWtleXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMtaXMtcmVnZXhwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZml4LXJlLXdrcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmxhZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYXR0ZW4taW50by1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZm9yLW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ludm9rZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtcmVnZXhwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNhbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWV4cG0xLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWZyb3VuZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zY2FsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1mb3JjZWQtcGFtLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcGVyZm9ybS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS1hbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZXBsYWNlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1wcm90by5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1odG1sLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctcGFkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctcmVwZWF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190YXNrLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VzZXItYWdlbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3ZhbGlkYXRlLWNvbGxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1leHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZXZlcnkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmpvaW4uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lm1hcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zbGljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1qc29uLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmJpbmQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFjb3NoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFzaW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNicnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY2x6MzIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY29zaC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5mcm91bmQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaW11bC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxMC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpZ24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2luaC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnRydW5jLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtZmluaXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnRvLXByZWNpc2lvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnBhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuYXBwbHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5oYXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuaXMtZXh0ZW5zaWJsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc2VhcmNoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnNldC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJpZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYm9sZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5maXhlZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmF3LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmVwZWF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc21hbGwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdGFydHMtd2l0aC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1cC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuYXJyYXktYnVmZmVyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5kYXRhLXZpZXcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0NjQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmludDE2LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1jbGFtcGVkLWFycmF5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1zZXQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5mbGF0dGVuLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lmdsb2JhbC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC5vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguY2xhbXAuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVnLXBlci1yYWQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5mc2NhbGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaWFkZGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaW11bGguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaXN1YmguanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkLXBlci1kZWcuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zY2FsZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5zaWduYml0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLWdldHRlci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYnNlcnZhYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5kZWxldGUtbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5oYXMtb3duLW1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lm1ldGFkYXRhLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLmF0LmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLmZyb20uanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LndlYWstbWFwLm9mLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5mcm9tLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZi5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL09pZGMvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnRpbWVycy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc2hpbS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vT2lkYy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYyBzeW5jIiwid2VicGFjazovL09pZGMvLi9zcmMvQWNjZXNzVG9rZW5FdmVudHMuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9DaGVja1Nlc3Npb25JRnJhbWUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Db3Jkb3ZhSUZyYW1lTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvQ29yZG92YVBvcHVwTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvQ29yZG92YVBvcHVwV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvRXJyb3JSZXNwb25zZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL0V2ZW50LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvR2xvYmFsLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSUZyYW1lTmF2aWdhdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSUZyYW1lV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSW5NZW1vcnlXZWJTdG9yYWdlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvSm9zZVV0aWwuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Kc29uU2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL0xvZy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL01ldGFkYXRhU2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL09pZGNDbGllbnQuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9PaWRjQ2xpZW50U2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Qb3B1cE5hdmlnYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1BvcHVwV2luZG93LmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvUmVkaXJlY3ROYXZpZ2F0b3IuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9SZXNwb25zZVZhbGlkYXRvci5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1Nlc3Npb25Nb25pdG9yLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvU2lnbmluUmVxdWVzdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpZ25pblJlc3BvbnNlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvU2lnbmluU3RhdGUuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9TaWdub3V0UmVxdWVzdC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpZ25vdXRSZXNwb25zZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1NpbGVudFJlbmV3U2VydmljZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1N0YXRlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVGltZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Ub2tlbkNsaWVudC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1Rva2VuUmV2b2NhdGlvbkNsaWVudC5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1VybFV0aWxpdHkuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Vc2VyLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVXNlckluZm9TZXJ2aWNlLmpzIiwid2VicGFjazovL09pZGMvLi9zcmMvVXNlck1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9Vc2VyTWFuYWdlckV2ZW50cy5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL1VzZXJNYW5hZ2VyU2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vT2lkYy8uL3NyYy9XZWJTdG9yYWdlU3RhdGVTdG9yZS5qcyIsIndlYnBhY2s6Ly9PaWRjLy4vc3JjL3JhbmRvbS5qcyJdLCJuYW1lcyI6WyJMb2ciLCJPaWRjQ2xpZW50IiwiT2lkY0NsaWVudFNldHRpbmdzIiwiV2ViU3RvcmFnZVN0YXRlU3RvcmUiLCJJbk1lbW9yeVdlYlN0b3JhZ2UiLCJVc2VyTWFuYWdlciIsIkFjY2Vzc1Rva2VuRXZlbnRzIiwiTWV0YWRhdGFTZXJ2aWNlIiwiQ29yZG92YVBvcHVwTmF2aWdhdG9yIiwiQ29yZG92YUlGcmFtZU5hdmlnYXRvciIsIkNoZWNrU2Vzc2lvbklGcmFtZSIsIlRva2VuUmV2b2NhdGlvbkNsaWVudCIsIlNlc3Npb25Nb25pdG9yIiwiR2xvYmFsIiwiVXNlciIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsIndpbmRvdyIsIllBSE9PIiwidW5kZWZpbmVkIiwibGFuZyIsImV4dGVuZCIsImciLCJoIiwiZiIsIkVycm9yIiwiZCIsInByb3RvdHlwZSIsImNvbnN0cnVjdG9yIiwic3VwZXJjbGFzcyIsIk9iamVjdCIsImIiLCJlIiwiYyIsInRlc3QiLCJqIiwiaSIsImxlbmd0aCIsImwiLCJrIiwiYSIsIkNyeXB0b0pTIiwibGliIiwiQmFzZSIsIm4iLCJwIiwibyIsIm1peEluIiwiaGFzT3duUHJvcGVydHkiLCJpbml0IiwiJHN1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjcmVhdGUiLCJ0b1N0cmluZyIsImNsb25lIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsInN0cmluZ2lmeSIsImNvbmNhdCIsInQiLCJxIiwicyIsImNsYW1wIiwiciIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJwdXNoIiwibSIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiTGF0aW4xIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiY2hhckNvZGVBdCIsIlV0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0iLCJyZXNldCIsIl9kYXRhIiwiX25EYXRhQnl0ZXMiLCJfYXBwZW5kIiwiX3Byb2Nlc3MiLCJ3IiwieCIsImJsb2NrU2l6ZSIsInYiLCJ1IiwibWF4IiwiX21pbkJ1ZmZlclNpemUiLCJtaW4iLCJfZG9Qcm9jZXNzQmxvY2siLCJzcGxpY2UiLCJIYXNoZXIiLCJjZmciLCJfZG9SZXNldCIsInVwZGF0ZSIsImZpbmFsaXplIiwiX2RvRmluYWxpemUiLCJfY3JlYXRlSGVscGVyIiwiX2NyZWF0ZUhtYWNIZWxwZXIiLCJITUFDIiwiYWxnbyIsIk1hdGgiLCJ4NjQiLCJXb3JkIiwiaGlnaCIsImxvdyIsInRvWDMyIiwiQmFzZTY0IiwiX21hcCIsImNoYXJBdCIsImluZGV4T2YiLCJzcXJ0IiwicG93IiwiU0hBMjU2IiwiX2hhc2giLCJmbG9vciIsIkhtYWNTSEEyNTYiLCJUIiwiZWEiLCJTSEE1MTIiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIlgiLCJLIiwiWSIsIkwiLCJaIiwiTSIsIiQiLCJOIiwiYWEiLCJPIiwiYmEiLCJQIiwiY2EiLCJRIiwieiIsIkEiLCJ5IiwiVSIsIkIiLCJSIiwiQyIsIlMiLCJEIiwiViIsIkUiLCJXIiwiZmEiLCJkYSIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiYjY0bWFwIiwiYjY0cGFkIiwiaGV4MmI2NCIsInN1YnN0cmluZyIsImI2NHRvaGV4IiwiaW50MmNoYXIiLCJiNjR0b0JBIiwiQXJyYXkiLCJkYml0cyIsImNhbmFyeSIsImpfbG0iLCJCaWdJbnRlZ2VyIiwiZnJvbU51bWJlciIsImZyb21TdHJpbmciLCJuYmkiLCJhbTEiLCJhbTIiLCJhbTMiLCJhcHBOYW1lIiwiYW0iLCJEQiIsIkRNIiwiRFYiLCJCSV9GUCIsIkZWIiwiRjEiLCJGMiIsIkJJX1JNIiwiQklfUkMiLCJyciIsInZ2IiwiaW50QXQiLCJibnBDb3B5VG8iLCJibnBGcm9tSW50IiwibmJ2IiwiZnJvbUludCIsImJucEZyb21TdHJpbmciLCJmcm9tUmFkaXgiLCJaRVJPIiwic3ViVG8iLCJibnBDbGFtcCIsImJuVG9TdHJpbmciLCJuZWdhdGUiLCJ0b1JhZGl4IiwiYm5OZWdhdGUiLCJibkFicyIsImJuQ29tcGFyZVRvIiwibmJpdHMiLCJibkJpdExlbmd0aCIsImJucERMU2hpZnRUbyIsImJucERSU2hpZnRUbyIsImJucExTaGlmdFRvIiwiYm5wUlNoaWZ0VG8iLCJibnBTdWJUbyIsImJucE11bHRpcGx5VG8iLCJhYnMiLCJibnBTcXVhcmVUbyIsImJucERpdlJlbVRvIiwiY29weVRvIiwibFNoaWZ0VG8iLCJkbFNoaWZ0VG8iLCJjb21wYXJlVG8iLCJPTkUiLCJkclNoaWZ0VG8iLCJyU2hpZnRUbyIsImJuTW9kIiwiZGl2UmVtVG8iLCJDbGFzc2ljIiwiY0NvbnZlcnQiLCJtb2QiLCJjUmV2ZXJ0IiwiY1JlZHVjZSIsImNNdWxUbyIsIm11bHRpcGx5VG8iLCJyZWR1Y2UiLCJjU3FyVG8iLCJzcXVhcmVUbyIsImNvbnZlcnQiLCJyZXZlcnQiLCJtdWxUbyIsInNxclRvIiwiYm5wSW52RGlnaXQiLCJNb250Z29tZXJ5IiwibXAiLCJpbnZEaWdpdCIsIm1wbCIsIm1waCIsInVtIiwibXQyIiwibW9udENvbnZlcnQiLCJtb250UmV2ZXJ0IiwibW9udFJlZHVjZSIsIm1vbnRTcXJUbyIsIm1vbnRNdWxUbyIsImJucElzRXZlbiIsImJucEV4cCIsImJuTW9kUG93SW50IiwiaXNFdmVuIiwiZXhwIiwiYml0TGVuZ3RoIiwibW9kUG93SW50IiwiYm5DbG9uZSIsImJuSW50VmFsdWUiLCJibkJ5dGVWYWx1ZSIsImJuU2hvcnRWYWx1ZSIsImJucENodW5rU2l6ZSIsIkxOMiIsImxvZyIsImJuU2lnTnVtIiwiYm5wVG9SYWRpeCIsInNpZ251bSIsImNodW5rU2l6ZSIsImludFZhbHVlIiwiYm5wRnJvbVJhZGl4IiwiZE11bHRpcGx5IiwiZEFkZE9mZnNldCIsImJucEZyb21OdW1iZXIiLCJ0ZXN0Qml0IiwiYml0d2lzZVRvIiwic2hpZnRMZWZ0Iiwib3Bfb3IiLCJpc1Byb2JhYmxlUHJpbWUiLCJuZXh0Qnl0ZXMiLCJiblRvQnl0ZUFycmF5IiwiYm5FcXVhbHMiLCJibk1pbiIsImJuTWF4IiwiYm5wQml0d2lzZVRvIiwib3BfYW5kIiwiYm5BbmQiLCJibk9yIiwib3BfeG9yIiwiYm5Yb3IiLCJvcF9hbmRub3QiLCJibkFuZE5vdCIsImJuTm90IiwiYm5TaGlmdExlZnQiLCJiblNoaWZ0UmlnaHQiLCJsYml0IiwiYm5HZXRMb3dlc3RTZXRCaXQiLCJjYml0IiwiYm5CaXRDb3VudCIsImJuVGVzdEJpdCIsImJucENoYW5nZUJpdCIsImJuU2V0Qml0IiwiY2hhbmdlQml0IiwiYm5DbGVhckJpdCIsImJuRmxpcEJpdCIsImJucEFkZFRvIiwiYm5BZGQiLCJhZGRUbyIsImJuU3VidHJhY3QiLCJibk11bHRpcGx5IiwiYm5TcXVhcmUiLCJibkRpdmlkZSIsImJuUmVtYWluZGVyIiwiYm5EaXZpZGVBbmRSZW1haW5kZXIiLCJibnBETXVsdGlwbHkiLCJibnBEQWRkT2Zmc2V0IiwiTnVsbEV4cCIsIm5Ob3AiLCJuTXVsVG8iLCJuU3FyVG8iLCJiblBvdyIsImJucE11bHRpcGx5TG93ZXJUbyIsImJucE11bHRpcGx5VXBwZXJUbyIsIkJhcnJldHQiLCJyMiIsInEzIiwibXUiLCJkaXZpZGUiLCJiYXJyZXR0Q29udmVydCIsImJhcnJldHRSZXZlcnQiLCJiYXJyZXR0UmVkdWNlIiwibXVsdGlwbHlVcHBlclRvIiwibXVsdGlwbHlMb3dlclRvIiwiYmFycmV0dFNxclRvIiwiYmFycmV0dE11bFRvIiwiYm5Nb2RQb3ciLCJibkdDRCIsImdldExvd2VzdFNldEJpdCIsImJucE1vZEludCIsImJuTW9kSW52ZXJzZSIsInN1YnRyYWN0IiwiYWRkIiwibG93cHJpbWVzIiwibHBsaW0iLCJibklzUHJvYmFibGVQcmltZSIsIm1vZEludCIsIm1pbGxlclJhYmluIiwiYm5wTWlsbGVyUmFiaW4iLCJzaGlmdFJpZ2h0IiwibW9kUG93IiwiYnl0ZVZhbHVlIiwic2hvcnRWYWx1ZSIsInRvQnl0ZUFycmF5IiwiZXF1YWxzIiwiYW5kIiwib3IiLCJ4b3IiLCJhbmROb3QiLCJub3QiLCJiaXRDb3VudCIsInNldEJpdCIsImNsZWFyQml0IiwiZmxpcEJpdCIsIm11bHRpcGx5IiwicmVtYWluZGVyIiwiZGl2aWRlQW5kUmVtYWluZGVyIiwibW9kSW52ZXJzZSIsImdjZCIsInNxdWFyZSIsIkFyY2ZvdXIiLCJBUkM0aW5pdCIsIkFSQzRuZXh0IiwibmV4dCIsInBybmdfbmV3c3RhdGUiLCJybmdfcHNpemUiLCJybmdfc3RhdGUiLCJybmdfcG9vbCIsInJuZ19wcHRyIiwicm5nX3NlZWRfaW50Iiwicm5nX3NlZWRfdGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiY3J5cHRvIiwibXNDcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJ1YSIsIlVpbnQ4QXJyYXkiLCJhcHBWZXJzaW9uIiwicm5nX2dldF9ieXRlIiwicm5nX2dldF9ieXRlcyIsIlNlY3VyZVJhbmRvbSIsInBhcnNlQmlnSW50IiwibGluZWJyayIsImJ5dGUySGV4IiwicGtjczFwYWQyIiwib2FlcF9tZ2YxX2FyciIsIm9hZXBfcGFkIiwiS0pVUiIsIk1lc3NhZ2VEaWdlc3QiLCJVdGlsIiwiZ2V0Q2Fub25pY2FsQWxnTmFtZSIsImdldEhhc2hMZW5ndGgiLCJoZXh0b3JzdHIiLCJoYXNoSGV4IiwicnN0cnRvaGV4IiwiUlNBS2V5IiwiZG1wMSIsImRtcTEiLCJjb2VmZiIsIlJTQVNldFB1YmxpYyIsImlzUHVibGljIiwiaXNQcml2YXRlIiwiUlNBRG9QdWJsaWMiLCJSU0FFbmNyeXB0IiwiZG9QdWJsaWMiLCJSU0FFbmNyeXB0T0FFUCIsInNldFB1YmxpYyIsImVuY3J5cHQiLCJlbmNyeXB0T0FFUCIsInR5cGUiLCJFQ0ZpZWxkRWxlbWVudEZwIiwiZmVGcEVxdWFscyIsImZlRnBUb0JpZ0ludGVnZXIiLCJmZUZwTmVnYXRlIiwiZmVGcEFkZCIsInRvQmlnSW50ZWdlciIsImZlRnBTdWJ0cmFjdCIsImZlRnBNdWx0aXBseSIsImZlRnBTcXVhcmUiLCJmZUZwRGl2aWRlIiwiRUNQb2ludEZwIiwiY3VydmUiLCJ6aW52IiwicG9pbnRGcEdldFgiLCJmcm9tQmlnSW50ZWdlciIsInBvaW50RnBHZXRZIiwicG9pbnRGcEVxdWFscyIsImlzSW5maW5pdHkiLCJwb2ludEZwSXNJbmZpbml0eSIsInBvaW50RnBOZWdhdGUiLCJwb2ludEZwQWRkIiwidHdpY2UiLCJnZXRJbmZpbml0eSIsInBvaW50RnBUd2ljZSIsInBvaW50RnBNdWx0aXBseSIsInBvaW50RnBNdWx0aXBseVR3byIsImdldFgiLCJnZXRZIiwibXVsdGlwbHlUd28iLCJFQ0N1cnZlRnAiLCJpbmZpbml0eSIsImN1cnZlRnBHZXRRIiwiY3VydmVGcEdldEEiLCJjdXJ2ZUZwR2V0QiIsImN1cnZlRnBFcXVhbHMiLCJjdXJ2ZUZwR2V0SW5maW5pdHkiLCJjdXJ2ZUZwRnJvbUJpZ0ludGVnZXIiLCJjdXJ2ZUZwRGVjb2RlUG9pbnRIZXgiLCJnZXRRIiwiZ2V0QSIsImdldEIiLCJkZWNvZGVQb2ludEhleCIsImdldEJ5dGVMZW5ndGgiLCJnZXRFbmNvZGVkIiwidG9CeXRlQXJyYXlVbnNpZ25lZCIsInVuc2hpZnQiLCJkZWNvZGVGcm9tIiwiZGVjb2RlRnJvbUhleCIsImFkZDJEIiwidHdpY2UyRCIsInZhbHVlT2YiLCJtdWx0aXBseTJEIiwiaXNPbkN1cnZlIiwidmFsaWRhdGUiLCJqc29uUGFyc2UiLCJSZWdFeHAiLCJtYXRjaCIsInJlcGxhY2UiLCJzaGlmdCIsImFzbjEiLCJBU04xVXRpbCIsImludGVnZXJUb0J5dGVIZXgiLCJiaWdJbnRUb01pblR3b3NDb21wbGVtZW50c0hleCIsImdldFBFTVN0cmluZ0Zyb21IZXgiLCJoZXh0b3BlbSIsIm5ld09iamVjdCIsIkRFUkJvb2xlYW4iLCJERVJJbnRlZ2VyIiwiREVSQml0U3RyaW5nIiwiREVST2N0ZXRTdHJpbmciLCJERVJOdWxsIiwiREVST2JqZWN0SWRlbnRpZmllciIsIkRFUkVudW1lcmF0ZWQiLCJERVJVVEY4U3RyaW5nIiwiREVSTnVtZXJpY1N0cmluZyIsIkRFUlByaW50YWJsZVN0cmluZyIsIkRFUlRlbGV0ZXhTdHJpbmciLCJERVJJQTVTdHJpbmciLCJERVJVVENUaW1lIiwiREVSR2VuZXJhbGl6ZWRUaW1lIiwiREVSU2VxdWVuY2UiLCJERVJTZXQiLCJERVJUYWdnZWRPYmplY3QiLCJrZXlzIiwiYXJyYXkiLCJ0YWciLCJleHBsaWNpdCIsIm9iaiIsImpzb25Ub0FTTjFIRVgiLCJnZXRFbmNvZGVkSGV4Iiwib2lkSGV4VG9JbnQiLCJvaWRJbnRUb0hleCIsInNwbGl0IiwiQVNOMU9iamVjdCIsImdldExlbmd0aEhleEZyb21WYWx1ZSIsImhWIiwiaFRMViIsImlzTW9kaWZpZWQiLCJnZXRGcmVzaFZhbHVlSGV4IiwiaEwiLCJoVCIsImdldFZhbHVlSGV4IiwiREVSQWJzdHJhY3RTdHJpbmciLCJnZXRTdHJpbmciLCJzZXRTdHJpbmciLCJ1dGY4dG9oZXgiLCJ0b0xvd2VyQ2FzZSIsInNldFN0cmluZ0hleCIsInN0ciIsImhleCIsIkRFUkFic3RyYWN0VGltZSIsImxvY2FsRGF0ZVRvVVRDIiwidXRjIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJmb3JtYXREYXRlIiwiemVyb1BhZGRpbmciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJzdG9oZXgiLCJzZXRCeURhdGVWYWx1ZSIsIlVUQyIsInNldEJ5RGF0ZSIsIkRFUkFic3RyYWN0U3RydWN0dXJlZCIsInNldEJ5QVNOMU9iamVjdEFycmF5IiwiYXNuMUFycmF5IiwiYXBwZW5kQVNOMU9iamVjdCIsInNldEJ5QmlnSW50ZWdlciIsInNldEJ5SW50ZWdlciIsInNldFZhbHVlSGV4IiwiYmlnaW50Iiwic2V0SGV4VmFsdWVJbmNsdWRpbmdVbnVzZWRCaXRzIiwic2V0VW51c2VkQml0c0FuZEhleFZhbHVlIiwic2V0QnlCaW5hcnlTdHJpbmciLCJzZXRCeUJvb2xlYW5BcnJheSIsIm5ld0ZhbHNlQXJyYXkiLCJiaW4iLCJzZXRWYWx1ZU9pZFN0cmluZyIsInNldFZhbHVlTmFtZSIsIng1MDkiLCJPSUQiLCJuYW1lMm9pZCIsIm9pZCIsIm5hbWUiLCJkYXRlIiwid2l0aE1pbGxpcyIsIm1pbGxpcyIsInNvcnRGbGFnIiwic29ydCIsInNvcnRmbGFnIiwiaXNFeHBsaWNpdCIsImFzbjFPYmplY3QiLCJzZXRBU04xT2JqZWN0IiwiQVNOMUhFWCIsImdldExibGVuIiwiZ2V0TCIsImdldFZibGVuIiwiZ2V0VmlkeCIsImdldFYiLCJnZXRUTFYiLCJnZXROZXh0U2libGluZ0lkeCIsImdldENoaWxkSWR4IiwiZ2V0TnRoQ2hpbGRJZHgiLCJnZXRJZHhieUxpc3QiLCJnZXRUTFZieUxpc3QiLCJnZXRWYnlMaXN0IiwiaGV4dG9vaWRzdHIiLCJkdW1wIiwib21taXRfbG9uZ19vY3RldCIsImlzQVNOMUhFWCIsIm9pZDJuYW1lIiwiaGV4dG91dGY4Iiwib2lkbmFtZSIsIkpTT04iLCJ4NTA5RXh0TmFtZSIsImlzSGV4IiwiQmFzZTY0eCIsInN0b0JBIiwiQkF0b3MiLCJCQXRvaGV4Iiwic3RvYjY0Iiwic3RvYjY0dSIsImI2NHRvYjY0dSIsImI2NHV0b3MiLCJiNjR1dG9iNjQiLCJoZXh0b2I2NHUiLCJiNjR1dG9oZXgiLCJ1dGY4dG9iNjR1IiwiYjY0dXRvdXRmOCIsIkJ1ZmZlciIsInVyaWNtcHRvaGV4IiwiZW5jb2RlVVJJQ29tcG9uZW50QWxsIiwiaGV4dG91cmljbXAiLCJ1dGY4dG9iNjQiLCJiNjR0b3V0ZjgiLCJoZXh0b2I2NCIsImhleHRvYjY0bmwiLCJiNjRubHRvaGV4IiwicGVtdG9oZXgiLCJoZXh0b0FycmF5QnVmZmVyIiwiQXJyYXlCdWZmZXIiLCJEYXRhVmlldyIsInNldFVpbnQ4IiwiQXJyYXlCdWZmZXJ0b2hleCIsImJ5dGVMZW5ndGgiLCJnZXRVaW50OCIsInp1bHV0b21zZWMiLCJ6dWx1dG9zZWMiLCJ6dWx1dG9kYXRlIiwiZGF0ZXRvenVsdSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImlwdjZ0b2hleCIsInJlcGVhdCIsImhleHRvaXB2NiIsImhleHRvaXAiLCJpcHRvaGV4IiwibmV3bGluZV90b1VuaXgiLCJuZXdsaW5lX3RvRG9zIiwiaXNJbnRlZ2VyIiwiaXNCYXNlNjQiLCJpc0Jhc2U2NFVSTCIsImlzSW50ZWdlckFycmF5IiwiaGV4dG9wb3NoZXgiLCJpbnRhcnlzdHJ0b2hleCIsIm1hcCIsInN0cmRpZmZpZHgiLCJESUdFU1RJTkZPSEVBRCIsInNoYTEiLCJzaGEyMjQiLCJzaGEyNTYiLCJzaGEzODQiLCJzaGE1MTIiLCJtZDIiLCJtZDUiLCJyaXBlbWQxNjAiLCJERUZBVUxUUFJPVklERVIiLCJobWFjbWQ1IiwiaG1hY3NoYTEiLCJobWFjc2hhMjI0IiwiaG1hY3NoYTI1NiIsImhtYWNzaGEzODQiLCJobWFjc2hhNTEyIiwiaG1hY3JpcGVtZDE2MCIsIk1ENXdpdGhSU0EiLCJTSEExd2l0aFJTQSIsIlNIQTIyNHdpdGhSU0EiLCJTSEEyNTZ3aXRoUlNBIiwiU0hBMzg0d2l0aFJTQSIsIlNIQTUxMndpdGhSU0EiLCJSSVBFTUQxNjB3aXRoUlNBIiwiTUQ1d2l0aEVDRFNBIiwiU0hBMXdpdGhFQ0RTQSIsIlNIQTIyNHdpdGhFQ0RTQSIsIlNIQTI1NndpdGhFQ0RTQSIsIlNIQTM4NHdpdGhFQ0RTQSIsIlNIQTUxMndpdGhFQ0RTQSIsIlJJUEVNRDE2MHdpdGhFQ0RTQSIsIlNIQTF3aXRoRFNBIiwiU0hBMjI0d2l0aERTQSIsIlNIQTI1NndpdGhEU0EiLCJNRDV3aXRoUlNBYW5kTUdGMSIsIlNIQTF3aXRoUlNBYW5kTUdGMSIsIlNIQTIyNHdpdGhSU0FhbmRNR0YxIiwiU0hBMjU2d2l0aFJTQWFuZE1HRjEiLCJTSEEzODR3aXRoUlNBYW5kTUdGMSIsIlNIQTUxMndpdGhSU0FhbmRNR0YxIiwiUklQRU1EMTYwd2l0aFJTQWFuZE1HRjEiLCJDUllQVE9KU01FU1NBR0VESUdFU1ROQU1FIiwiTUQ1IiwiU0hBMSIsIlNIQTIyNCIsIlJJUEVNRDE2MCIsImdldERpZ2VzdEluZm9IZXgiLCJnZXRQYWRkZWREaWdlc3RJbmZvSGV4IiwiaGFzaFN0cmluZyIsImFsZyIsImRpZ2VzdFN0cmluZyIsImRpZ2VzdEhleCIsInByb3YiLCJzaGEyNTZIZXgiLCJzaGE1MTJIZXgiLCJTRUNVUkVSQU5ET01HRU4iLCJnZXRSYW5kb21IZXhPZk5ieXRlcyIsImdldFJhbmRvbUJpZ0ludGVnZXJPZk5ieXRlcyIsImdldFJhbmRvbUhleE9mTmJpdHMiLCJnZXRSYW5kb21CaWdJbnRlZ2VyT2ZOYml0cyIsImdldFJhbmRvbUJpZ0ludGVnZXJaZXJvVG9NYXgiLCJnZXRSYW5kb21CaWdJbnRlZ2VyTWluVG9NYXgiLCJzZXRBbGdBbmRQcm92aWRlciIsIm1kIiwidXBkYXRlU3RyaW5nIiwidXBkYXRlSGV4IiwiZGlnZXN0Iiwic2pjbCIsImhhc2giLCJjb2RlYyIsInRvQml0cyIsImZyb21CaXRzIiwiYWxnTmFtZSIsInByb3ZOYW1lIiwiSEFTSExFTkdUSCIsIk1hYyIsImFsZ1Byb3YiLCJtYWMiLCJwYXNzIiwiZG9GaW5hbCIsImRvRmluYWxTdHJpbmciLCJkb0ZpbmFsSGV4Iiwic2V0UGFzc3dvcmQiLCJ1dGY4IiwicnN0ciIsImI2NCIsImI2NHUiLCJTaWduYXR1cmUiLCJfc2V0QWxnTmFtZXMiLCJtZEFsZ05hbWUiLCJwdWJrZXlBbGdOYW1lIiwiX3plcm9QYWRkaW5nT2ZTaWduYXR1cmUiLCJLRVlVVElMIiwiZ2V0S2V5IiwicHJ2S2V5Iiwic3RhdGUiLCJwdWJLZXkiLCJzaWduIiwic0hhc2hIZXgiLCJlY3BydmhleCIsImVjY3VydmVuYW1lIiwiRUNEU0EiLCJoU2lnbiIsInNpZ25IZXgiLCJzaWduV2l0aE1lc3NhZ2VIYXNoUFNTIiwicHNzU2FsdExlbiIsInNpZ25XaXRoTWVzc2FnZUhhc2giLCJEU0EiLCJzaWduU3RyaW5nIiwidmVyaWZ5IiwiZWNwdWJoZXgiLCJ2ZXJpZnlIZXgiLCJ2ZXJpZnlXaXRoTWVzc2FnZUhhc2hQU1MiLCJ2ZXJpZnlXaXRoTWVzc2FnZUhhc2giLCJhbGdQcm92TmFtZSIsImluaXRQYXJhbXMiLCJwc3NzYWx0bGVuIiwicHJ2a2V5cGVtIiwicHJ2a2V5cGFzIiwiQ2lwaGVyIiwiZ2V0QWxnQnlLZXlBbmROYW1lIiwiZGVjcnlwdCIsImRlY3J5cHRPQUVQIiwib2lkaGV4Mm5hbWUiLCJnZXRCaWdSYW5kb20iLCJzZXROYW1lZEN1cnZlIiwiZWNwYXJhbXMiLCJFQ1BhcmFtZXRlckRCIiwiZ2V0QnlOYW1lIiwicHJ2S2V5SGV4IiwicHViS2V5SGV4IiwiY3VydmVOYW1lIiwic2V0UHJpdmF0ZUtleUhleCIsInNldFB1YmxpY0tleUhleCIsImdldFB1YmxpY0tleVhZSGV4Iiwia2V5bGVuIiwiZ2V0U2hvcnROSVNUUEN1cnZlTmFtZSIsImdlbmVyYXRlS2V5UGFpckhleCIsImJpUlNTaWdUb0FTTjFTaWciLCJmcm9tQnl0ZUFycmF5VW5zaWduZWQiLCJzZXJpYWxpemVTaWciLCJwYXJzZVNpZ0hleCIsInZlcmlmeVJhdyIsIkJpdGNvaW4iLCJpc0FycmF5IiwicGFyc2VTaWciLCJ0b0J5dGVBcnJheVNpZ25lZCIsInBhcnNlU2lnQ29tcGFjdCIsInJlYWRQS0NTNVBydktleUhleCIsImdldE5hbWUiLCJyZWFkUEtDUzhQcnZLZXlIZXgiLCJyZWFkUEtDUzhQdWJLZXlIZXgiLCJyZWFkQ2VydFB1YktleUhleCIsInBydiIsInB1YiIsInBhcnNlU2lnSGV4SW5IZXhSUyIsImFzbjFTaWdUb0NvbmNhdFNpZyIsImNvbmNhdFNpZ1RvQVNOMVNpZyIsImhleFJTU2lnVG9BU04xU2lnIiwicmVnaXN0IiwiQUVTIiwiVHJpcGxlREVTIiwiREVTIiwia2V5IiwiaXYiLCJjaXBoZXJ0ZXh0IiwicHJvYyIsImVwcm9jIiwiaXZsZW4iLCJjaXBoZXIiLCJpdnNhbHQiLCJkYXRhIiwia2V5aGV4IiwiaXZoZXgiLCJ2ZXJzaW9uIiwicGFyc2VQS0NTNVBFTSIsImdldEtleUFuZFVudXNlZEl2QnlQYXNzY29kZUFuZEl2c2FsdCIsImRlY3J5cHRLZXlCNjQiLCJnZXREZWNyeXB0ZWRLZXlIZXgiLCJnZXRFbmNyeXB0ZWRQS0NTNVBFTUZyb21QcnZLZXlIZXgiLCJ0b1VwcGVyQ2FzZSIsInBhcnNlSGV4T2ZFbmNyeXB0ZWRQS0NTOCIsImVuY3J5cHRpb25TY2hlbWVBbGciLCJlbmNyeXB0aW9uU2NoZW1lSVYiLCJwYmtkZjJTYWx0IiwicGJrZGYySXRlciIsImdldFBCS0RGMktleUhleEZyb21QYXJhbSIsIlBCS0RGMiIsImtleVNpemUiLCJpdGVyYXRpb25zIiwiX2dldFBsYWluUEtDUzhIZXhGcm9tRW5jcnlwdGVkUEtDUzhQRU0iLCJnZXRLZXlGcm9tRW5jcnlwdGVkUEtDUzhQRU0iLCJnZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhIZXgiLCJwYXJzZVBsYWluUHJpdmF0ZVBLQ1M4SGV4IiwiYWxncGFyYW0iLCJhbGdvaWQiLCJrZXlpZHgiLCJnZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhQRU0iLCJfZ2V0S2V5RnJvbVB1YmxpY1BLQ1M4SGV4IiwicGFyc2VQdWJsaWNSYXdSU0FLZXlIZXgiLCJwYXJzZVB1YmxpY1BLQ1M4SGV4IiwieHkiLCJrdHkiLCJkcCIsImRxIiwiY28iLCJxaSIsInNldFByaXZhdGVFeCIsInNldFByaXZhdGUiLCJjcnYiLCJYNTA5IiwiZ2V0UHVibGljS2V5RnJvbUNlcnRIZXgiLCJnZXRQdWJsaWNLZXlGcm9tQ2VydFBFTSIsImdlbmVyYXRlS2V5cGFpciIsImdlbmVyYXRlIiwicHJ2S2V5T2JqIiwicHViS2V5T2JqIiwiZ2V0UEVNIiwiU3ViamVjdFB1YmxpY0tleUluZm8iLCJzZXEiLCJvY3RzdHIiLCJiaXRzdHIiLCJnZXRLZXlGcm9tQ1NSUEVNIiwiZ2V0S2V5RnJvbUNTUkhleCIsInBhcnNlQ1NSSGV4IiwicDhwdWJrZXloZXgiLCJnZXRKV0tGcm9tS2V5IiwiZ2V0UG9zQXJyYXlPZkNoaWxkcmVuRnJvbUhleCIsImdldEhleFZhbHVlQXJyYXlPZkNoaWxkcmVuRnJvbUhleCIsInJlYWRQcml2YXRlS2V5RnJvbVBFTVN0cmluZyIsInJlYWRQS0NTNVB1YktleUhleCIsInJlYWRDZXJ0SGV4IiwiZ2V0UHVibGljS2V5SGV4IiwiX1JFX0hFWERFQ09OTFkiLCJjb21waWxlIiwiX3JzYXNpZ25fZ2V0SGV4UGFkZGVkRGlnZXN0SW5mb0ZvclN0cmluZyIsImRvUHJpdmF0ZSIsInBzc19tZ2YxX3N0ciIsInNpZ25QU1MiLCJfcnNhc2lnbl9nZXREZWNyeXB0U2lnbmF0dXJlQkkiLCJfcnNhc2lnbl9nZXRIZXhEaWdlc3RJbmZvRnJvbVNpZyIsIl9yc2FzaWduX2dldEFsZ05hbWVBbmRIYXNoRnJvbUhleERpc2dlc3RJbmZvIiwidmVyaWZ5UFNTIiwiU0FMVF9MRU5fSExFTiIsIlNBTFRfTEVOX01BWCIsIlNBTFRfTEVOX1JFQ09WRVIiLCJmb2Zmc2V0IiwiYUV4dEluZm8iLCJnZXRWZXJzaW9uIiwiZ2V0U2VyaWFsTnVtYmVySGV4IiwiZ2V0U2lnbmF0dXJlQWxnb3JpdGhtRmllbGQiLCJnZXRJc3N1ZXJIZXgiLCJnZXRJc3N1ZXJTdHJpbmciLCJoZXgyZG4iLCJnZXRTdWJqZWN0SGV4IiwiZ2V0U3ViamVjdFN0cmluZyIsImdldE5vdEJlZm9yZSIsImdldE5vdEFmdGVyIiwiZ2V0UHVibGljS2V5SWR4IiwiZ2V0UHVibGljS2V5Q29udGVudElkeCIsImdldFB1YmxpY0tleSIsImdldFNpZ25hdHVyZUFsZ29yaXRobU5hbWUiLCJnZXRTaWduYXR1cmVWYWx1ZUhleCIsInZlcmlmeVNpZ25hdHVyZSIsInBhcnNlRXh0IiwiY3JpdGljYWwiLCJ2aWR4IiwiZ2V0RXh0SW5mbyIsImdldEV4dEJhc2ljQ29uc3RyYWludHMiLCJjQSIsInBhdGhMZW4iLCJnZXRFeHRLZXlVc2FnZUJpbiIsImdldEV4dEtleVVzYWdlU3RyaW5nIiwiS0VZVVNBR0VfTkFNRSIsImdldEV4dFN1YmplY3RLZXlJZGVudGlmaWVyIiwiZ2V0RXh0QXV0aG9yaXR5S2V5SWRlbnRpZmllciIsImtpZCIsImdldEV4dEV4dEtleVVzYWdlTmFtZSIsImdldEV4dFN1YmplY3RBbHROYW1lIiwiZ2V0RXh0U3ViamVjdEFsdE5hbWUyIiwiZ2V0RXh0Q1JMRGlzdHJpYnV0aW9uUG9pbnRzVVJJIiwiZ2V0RXh0QUlBSW5mbyIsIm9jc3AiLCJjYWlzc3VlciIsImdldEV4dENlcnRpZmljYXRlUG9saWNpZXMiLCJpZCIsImNwcyIsInVub3RpY2UiLCJyZWFkQ2VydFBFTSIsImdldEluZm8iLCJoZXgycmRuIiwiaGV4MmF0dHJUeXBlVmFsdWUiLCJvaWQyYXR5cGUiLCJnZXRQdWJsaWNLZXlJbmZvUHJvcE9mQ2VydFBFTSIsImp3cyIsIkpXUyIsImlzU2FmZUpTT05TdHJpbmciLCJwYXJzZUpXUyIsInBhcnNlZEpXUyIsInNpZ3ZhbEgiLCJoZWFkQjY0VSIsInBheWxvYWRCNjRVIiwic2lndmFsQjY0VSIsInNpIiwic2lndmFsQkkiLCJoZWFkUyIsInBheWxvYWRTIiwicmVhZFNhZmVKU09OU3RyaW5nIiwiandzYWxnMnNpZ2FsZyIsImhBU04xU2lnIiwiaGVhZGVyT2JqIiwicGF5bG9hZE9iaiIsImhlYWRlclBQIiwicGF5bG9hZFBQIiwic2lnSGV4IiwidmVyaWZ5SldUIiwiaW5BcnJheSIsImluY2x1ZGVkQXJyYXkiLCJpc3MiLCJzdWIiLCJhdWQiLCJJbnREYXRlIiwiZ2V0Tm93IiwidmVyaWZ5QXQiLCJncmFjZVBlcmlvZCIsIm5iZiIsImlhdCIsImp0aSIsIkhTMjU2IiwiSFMzODQiLCJIUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIkVTMjU2IiwiRVMzODQiLCJQUzI1NiIsIlBTMzg0IiwiUFM1MTIiLCJub25lIiwiZ2V0RW5jb2RlZFNpZ25hdHVyZVZhbHVlRnJvbUpXUyIsImdldEpXS3RodW1icHJpbnQiLCJnZXQiLCJnZXRadWx1IiwiaW50RGF0ZTJVVENTdHJpbmciLCJ0b1VUQ1N0cmluZyIsImludERhdGUyWnVsdSIsIkVEU0EiLCJfY3J5cHRvIiwiRGVmYXVsdEFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lIiwiYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUiLCJhY2Nlc3NUb2tlbkV4cGlyaW5nVGltZXIiLCJUaW1lciIsImFjY2Vzc1Rva2VuRXhwaXJlZFRpbWVyIiwiX2FjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lIiwiX2FjY2Vzc1Rva2VuRXhwaXJpbmciLCJfYWNjZXNzVG9rZW5FeHBpcmVkIiwibG9hZCIsImNvbnRhaW5lciIsImFjY2Vzc190b2tlbiIsImV4cGlyZXNfaW4iLCJkdXJhdGlvbiIsImRlYnVnIiwiZXhwaXJpbmciLCJjYW5jZWwiLCJleHBpcmVkIiwidW5sb2FkIiwiYWRkQWNjZXNzVG9rZW5FeHBpcmluZyIsImNiIiwiYWRkSGFuZGxlciIsInJlbW92ZUFjY2Vzc1Rva2VuRXhwaXJpbmciLCJyZW1vdmVIYW5kbGVyIiwiYWRkQWNjZXNzVG9rZW5FeHBpcmVkIiwicmVtb3ZlQWNjZXNzVG9rZW5FeHBpcmVkIiwiRGVmYXVsdEludGVydmFsIiwiY2FsbGJhY2siLCJjbGllbnRfaWQiLCJ1cmwiLCJpbnRlcnZhbCIsInN0b3BPbkVycm9yIiwiX2NhbGxiYWNrIiwiX2NsaWVudF9pZCIsIl91cmwiLCJfaW50ZXJ2YWwiLCJfc3RvcE9uRXJyb3IiLCJpZHgiLCJfZnJhbWVfb3JpZ2luIiwiX2ZyYW1lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJ2aXNpYmlsaXR5IiwicG9zaXRpb24iLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJzcmMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm9ubG9hZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIl9ib3VuZE1lc3NhZ2VFdmVudCIsIl9tZXNzYWdlIiwiYmluZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJvcmlnaW4iLCJzb3VyY2UiLCJjb250ZW50V2luZG93IiwiZXJyb3IiLCJzdG9wIiwic3RhcnQiLCJzZXNzaW9uX3N0YXRlIiwiX3Nlc3Npb25fc3RhdGUiLCJzZW5kIiwicG9zdE1lc3NhZ2UiLCJfdGltZXIiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJwcmVwYXJlIiwicGFyYW1zIiwicG9wdXBXaW5kb3dGZWF0dXJlcyIsInBvcHVwIiwiQ29yZG92YVBvcHVwV2luZG93IiwiRGVmYXVsdFBvcHVwRmVhdHVyZXMiLCJEZWZhdWx0UG9wdXBUYXJnZXQiLCJfcHJvbWlzZSIsInJlamVjdCIsIl9yZXNvbHZlIiwiX3JlamVjdCIsImZlYXR1cmVzIiwidGFyZ2V0IiwicG9wdXBXaW5kb3dUYXJnZXQiLCJyZWRpcmVjdF91cmkiLCJzdGFydFVybCIsIl9pc0luQXBwQnJvd3Nlckluc3RhbGxlZCIsImNvcmRvdmFNZXRhZGF0YSIsInNvbWUiLCJuYXZpZ2F0ZSIsIl9lcnJvciIsImNvcmRvdmEiLCJyZXF1aXJlIiwibWV0YWRhdGEiLCJfcG9wdXAiLCJJbkFwcEJyb3dzZXIiLCJvcGVuIiwiX2V4aXRDYWxsYmFja0V2ZW50IiwiX2V4aXRDYWxsYmFjayIsIl9sb2FkU3RhcnRDYWxsYmFja0V2ZW50IiwiX2xvYWRTdGFydENhbGxiYWNrIiwicHJvbWlzZSIsImV2ZW50IiwiX3N1Y2Nlc3MiLCJtZXNzYWdlIiwiX2NsZWFudXAiLCJjbG9zZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJFcnJvclJlc3BvbnNlIiwiZXJyb3JfZGVzY3JpcHRpb24iLCJlcnJvcl91cmkiLCJFdmVudCIsIl9uYW1lIiwiX2NhbGxiYWNrcyIsImZpbmRJbmRleCIsIml0ZW0iLCJyYWlzZSIsInRpbWVyIiwiaGFuZGxlIiwidGVzdGluZyIsInJlcXVlc3QiLCJfdGVzdGluZyIsInNldFhNTEh0dHBSZXF1ZXN0IiwibmV3UmVxdWVzdCIsImxvY2F0aW9uIiwibG9jYWxTdG9yYWdlIiwic2Vzc2lvblN0b3JhZ2UiLCJYTUxIdHRwUmVxdWVzdCIsIklGcmFtZU5hdmlnYXRvciIsImZyYW1lIiwiSUZyYW1lV2luZG93Iiwibm90aWZ5UGFyZW50IiwiRGVmYXVsdFRpbWVvdXQiLCJ0aW1lb3V0Iiwic2lsZW50UmVxdWVzdFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiX3RpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJyZW1vdmVDaGlsZCIsIl9vcmlnaW4iLCJmcmFtZUVsZW1lbnQiLCJocmVmIiwicGFyZW50IiwicHJvdG9jb2wiLCJob3N0IiwiZ2V0SXRlbSIsInNldEl0ZW0iLCJ2YWx1ZSIsInJlbW92ZUl0ZW0iLCJpbmRleCIsImdldE93blByb3BlcnR5TmFtZXMiLCJBbGxvd2VkU2lnbmluZ0FsZ3MiLCJKb3NlVXRpbCIsInBhcnNlSnd0Iiwiand0IiwidG9rZW4iLCJoZWFkZXIiLCJwYXlsb2FkIiwidmFsaWRhdGVKd3QiLCJpc3N1ZXIiLCJhdWRpZW5jZSIsImNsb2NrU2tldyIsIm5vdyIsIktleVV0aWwiLCJ4NWMiLCJfdmFsaWRhdGVKd3QiLCJ2YWxpZGF0ZUp3dEF0dHJpYnV0ZXMiLCJ2YWxpZEF1ZGllbmNlIiwiYXpwIiwibG93ZXJOb3ciLCJ1cHBlck5vdyIsInRoZW4iLCJoZXhUb0Jhc2U2NFVybCIsIkpzb25TZXJ2aWNlIiwiYWRkaXRpb25hbENvbnRlbnRUeXBlcyIsIlhNTEh0dHBSZXF1ZXN0Q3RvciIsIl9jb250ZW50VHlwZXMiLCJfWE1MSHR0cFJlcXVlc3QiLCJnZXRKc29uIiwicmVxIiwiYWxsb3dlZENvbnRlbnRUeXBlcyIsInN0YXR1cyIsImNvbnRlbnRUeXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJmb3VuZCIsImZpbmQiLCJzdGFydHNXaXRoIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzVGV4dCIsIm9uZXJyb3IiLCJzZXRSZXF1ZXN0SGVhZGVyIiwicG9zdEZvcm0iLCJub3BMb2dnZXIiLCJpbmZvIiwid2FybiIsIk5PTkUiLCJFUlJPUiIsIldBUk4iLCJJTkZPIiwiREVCVUciLCJsb2dnZXIiLCJsZXZlbCIsImFyZ3MiLCJmcm9tIiwiT2lkY01ldGFkYXRhVXJsUGF0aCIsInNldHRpbmdzIiwiSnNvblNlcnZpY2VDdG9yIiwiX3NldHRpbmdzIiwiX2pzb25TZXJ2aWNlIiwiZ2V0TWV0YWRhdGEiLCJtZXRhZGF0YVVybCIsImdldElzc3VlciIsIl9nZXRNZXRhZGF0YVByb3BlcnR5IiwiZ2V0QXV0aG9yaXphdGlvbkVuZHBvaW50IiwiZ2V0VXNlckluZm9FbmRwb2ludCIsImdldFRva2VuRW5kcG9pbnQiLCJvcHRpb25hbCIsImdldENoZWNrU2Vzc2lvbklmcmFtZSIsImdldEVuZFNlc3Npb25FbmRwb2ludCIsImdldFJldm9jYXRpb25FbmRwb2ludCIsImdldEtleXNFbmRwb2ludCIsImdldFNpZ25pbmdLZXlzIiwic2lnbmluZ0tleXMiLCJqd2tzX3VyaSIsImtleVNldCIsIl9tZXRhZGF0YVVybCIsImF1dGhvcml0eSIsImNyZWF0ZVNpZ25pblJlcXVlc3QiLCJyZXNwb25zZV90eXBlIiwic2NvcGUiLCJwcm9tcHQiLCJtYXhfYWdlIiwidWlfbG9jYWxlcyIsImlkX3Rva2VuX2hpbnQiLCJsb2dpbl9oaW50IiwiYWNyX3ZhbHVlcyIsInJlc291cmNlIiwicmVxdWVzdF91cmkiLCJyZXNwb25zZV9tb2RlIiwiZXh0cmFRdWVyeVBhcmFtcyIsInN0YXRlU3RvcmUiLCJTaWduaW5SZXF1ZXN0IiwiaXNDb2RlIiwiX21ldGFkYXRhU2VydmljZSIsInNpZ25pblJlcXVlc3QiLCJzaWduaW5TdGF0ZSIsIl9zdGF0ZVN0b3JlIiwic2V0IiwidG9TdG9yYWdlU3RyaW5nIiwicHJvY2Vzc1NpZ25pblJlc3BvbnNlIiwidXNlUXVlcnkiLCJkZWxpbWl0ZXIiLCJyZXNwb25zZSIsIlNpZ25pblJlc3BvbnNlIiwicmVtb3ZlIiwic3RvcmVkU3RhdGVTdHJpbmciLCJTaWduaW5TdGF0ZSIsImZyb21TdG9yYWdlU3RyaW5nIiwiX3ZhbGlkYXRvciIsInZhbGlkYXRlU2lnbmluUmVzcG9uc2UiLCJjcmVhdGVTaWdub3V0UmVxdWVzdCIsInBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSIsIlNpZ25vdXRSZXF1ZXN0Iiwic2lnbm91dFN0YXRlIiwicHJvY2Vzc1NpZ25vdXRSZXNwb25zZSIsIlNpZ25vdXRSZXNwb25zZSIsInN0YXRlS2V5IiwiU3RhdGUiLCJ2YWxpZGF0ZVNpZ25vdXRSZXNwb25zZSIsImNsZWFyU3RhbGVTdGF0ZSIsInN0YWxlU3RhdGVBZ2UiLCJ2YWxpZGF0b3IiLCJtZXRhZGF0YVNlcnZpY2UiLCJEZWZhdWx0UmVzcG9uc2VUeXBlIiwiRGVmYXVsdFNjb3BlIiwiRGVmYXVsdFN0YWxlU3RhdGVBZ2UiLCJEZWZhdWx0Q2xvY2tTa2V3SW5TZWNvbmRzIiwiY2xpZW50X3NlY3JldCIsImZpbHRlclByb3RvY29sQ2xhaW1zIiwibG9hZFVzZXJJbmZvIiwiUmVzcG9uc2VWYWxpZGF0b3JDdG9yIiwiUmVzcG9uc2VWYWxpZGF0b3IiLCJNZXRhZGF0YVNlcnZpY2VDdG9yIiwiX2F1dGhvcml0eSIsIl9tZXRhZGF0YSIsIl9zaWduaW5nS2V5cyIsIl9jbGllbnRfc2VjcmV0IiwiX3Jlc3BvbnNlX3R5cGUiLCJfc2NvcGUiLCJfcmVkaXJlY3RfdXJpIiwiX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSIsIl9wcm9tcHQiLCJfZGlzcGxheSIsIl9tYXhfYWdlIiwiX3VpX2xvY2FsZXMiLCJfYWNyX3ZhbHVlcyIsIl9yZXNvdXJjZSIsIl9yZXNwb25zZV9tb2RlIiwiX2ZpbHRlclByb3RvY29sQ2xhaW1zIiwiX2xvYWRVc2VySW5mbyIsIl9zdGFsZVN0YXRlQWdlIiwiX2Nsb2NrU2tldyIsIl9leHRyYVF1ZXJ5UGFyYW1zIiwiUG9wdXBOYXZpZ2F0b3IiLCJQb3B1cFdpbmRvdyIsImtlZXBPcGVuIiwibm90aWZ5T3BlbmVyIiwiQ2hlY2tGb3JQb3B1cENsb3NlZEludGVydmFsIiwiX2NoZWNrRm9yUG9wdXBDbG9zZWRUaW1lciIsIl9jaGVja0ZvclBvcHVwQ2xvc2VkIiwiX2lkIiwiZm9jdXMiLCJjbG9zZWQiLCJvcGVuZXIiLCJVcmxVdGlsaXR5IiwicGFyc2VVcmxGcmFnbWVudCIsIlJlZGlyZWN0TmF2aWdhdG9yIiwiUHJvdG9jb2xDbGFpbXMiLCJVc2VySW5mb1NlcnZpY2VDdG9yIiwiVXNlckluZm9TZXJ2aWNlIiwiam9zZVV0aWwiLCJUb2tlbkNsaWVudEN0b3IiLCJUb2tlbkNsaWVudCIsIl91c2VySW5mb1NlcnZpY2UiLCJfam9zZVV0aWwiLCJfdG9rZW5DbGllbnQiLCJfcHJvY2Vzc1NpZ25pblBhcmFtcyIsIl92YWxpZGF0ZVRva2VucyIsIl9wcm9jZXNzQ2xhaW1zIiwibm9uY2UiLCJpZF90b2tlbiIsImNvZGVfdmVyaWZpZXIiLCJjb2RlIiwiaXNPcGVuSWRDb25uZWN0IiwicHJvZmlsZSIsImdldENsYWltcyIsImNsYWltcyIsIl9tZXJnZUNsYWltcyIsImNsYWltczEiLCJjbGFpbXMyIiwicmVzdWx0IiwiYXNzaWduIiwidmFsdWVzIiwiZm9yRWFjaCIsIl9wcm9jZXNzQ29kZSIsIl92YWxpZGF0ZUlkVG9rZW5BbmRBY2Nlc3NUb2tlbiIsIl92YWxpZGF0ZUlkVG9rZW4iLCJleGNoYW5nZUNvZGUiLCJ0b2tlblJlc3BvbnNlIiwiX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXMiLCJjbG9ja1NrZXdJblNlY29uZHMiLCJfdmFsaWRhdGVBY2Nlc3NUb2tlbiIsIl9maWx0ZXJCeUFsZyIsImZpbHRlciIsImF0X2hhc2giLCJoYXNoQWxnIiwiaGFzaEJpdHMiLCJzaGEiLCJsZWZ0IiwibGVmdF9iNjR1IiwidXNlck1hbmFnZXIiLCJDaGVja1Nlc3Npb25JRnJhbWVDdG9yIiwiX3VzZXJNYW5hZ2VyIiwiX0NoZWNrU2Vzc2lvbklGcmFtZUN0b3IiLCJldmVudHMiLCJhZGRVc2VyTG9hZGVkIiwiX3N0YXJ0IiwiYWRkVXNlclVubG9hZGVkIiwiX3N0b3AiLCJnZXRVc2VyIiwidXNlciIsImNhdGNoIiwiZXJyIiwiX3N1YiIsIl9zaWQiLCJzaWQiLCJfY2hlY2tTZXNzaW9uSUZyYW1lIiwiX2NoZWNrU2Vzc2lvbkludGVydmFsIiwiX3N0b3BDaGVja1Nlc3Npb25PbkVycm9yIiwicXVlcnlTZXNzaW9uU3RhdHVzIiwicmFpc2VVc2VyU2lnbmVkT3V0RXZlbnQiLCJzZXNzaW9uIiwiX3JhaXNlVXNlclNlc3Npb25DaGFuZ2VkIiwiX3JhaXNlVXNlclNpZ25lZE91dCIsImNoZWNrU2Vzc2lvbkludGVydmFsIiwic3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IiLCJvaWRjIiwiaXNPaWRjIiwiYWRkUXVlcnlQYXJhbSIsImNvZGVfY2hhbGxlbmdlIiwiaXNPQXV0aCIsIk9pZGNTY29wZSIsInRva2VuX3R5cGUiLCJleHBpcmVzX2F0Iiwic2NvcGVzIiwiX25vbmNlIiwiX2NvZGVfdmVyaWZpZXIiLCJfY29kZV9jaGFsbGVuZ2UiLCJjcmVhdGVkIiwic3RvcmFnZVN0cmluZyIsIlNpbGVudFJlbmV3U2VydmljZSIsIl90b2tlbkV4cGlyaW5nIiwic2lnbmluU2lsZW50IiwiX3JhaXNlU2lsZW50UmVuZXdFcnJvciIsIl9jcmVhdGVkIiwic3RvcmFnZSIsImFnZSIsImN1dG9mZiIsImdldEFsbEtleXMiLCJwcm9taXNlcyIsImFsbCIsIlRpbWVyRHVyYXRpb24iLCJub3dGdW5jIiwiX25vd0Z1bmMiLCJleHBpcmF0aW9uIiwiX3RpbWVySGFuZGxlIiwiX2V4cGlyYXRpb24iLCJ0aW1lckR1cmF0aW9uIiwiZGlmZiIsImdyYW50X3R5cGUiLCJleGNoYW5nZVJlZnJlc2hUb2tlbiIsInJlZnJlc2hfdG9rZW4iLCJBY2Nlc3NUb2tlblR5cGVIaW50IiwiUmVmcmVzaFRva2VuVHlwZUhpbnQiLCJfWE1MSHR0cFJlcXVlc3RDdG9yIiwicmV2b2tlIiwicmVxdWlyZWQiLCJfcmV2b2tlIiwieGhyIiwiZ2xvYmFsIiwibGFzdEluZGV4T2YiLCJyZWdleCIsImNvdW50ZXIiLCJleGVjIiwicHJvcCIsIlNpbGVudFJlbmV3U2VydmljZUN0b3IiLCJTZXNzaW9uTW9uaXRvckN0b3IiLCJUb2tlblJldm9jYXRpb25DbGllbnRDdG9yIiwiVXNlck1hbmFnZXJTZXR0aW5ncyIsIl9ldmVudHMiLCJVc2VyTWFuYWdlckV2ZW50cyIsIl9zaWxlbnRSZW5ld1NlcnZpY2UiLCJhdXRvbWF0aWNTaWxlbnRSZW5ldyIsInN0YXJ0U2lsZW50UmVuZXciLCJtb25pdG9yU2Vzc2lvbiIsIl9zZXNzaW9uTW9uaXRvciIsIl90b2tlblJldm9jYXRpb25DbGllbnQiLCJfbG9hZFVzZXIiLCJyZW1vdmVVc2VyIiwic3RvcmVVc2VyIiwic2lnbmluUmVkaXJlY3QiLCJfc2lnbmluU3RhcnQiLCJfcmVkaXJlY3ROYXZpZ2F0b3IiLCJzaWduaW5SZWRpcmVjdENhbGxiYWNrIiwiX3NpZ25pbkVuZCIsInNpZ25pblBvcHVwIiwicG9wdXBfcmVkaXJlY3RfdXJpIiwiX3NpZ25pbiIsIl9wb3B1cE5hdmlnYXRvciIsInNpZ25pblBvcHVwQ2FsbGJhY2siLCJfc2lnbmluQ2FsbGJhY2siLCJfdXNlUmVmcmVzaFRva2VuIiwiaW5jbHVkZUlkVG9rZW5JblNpbGVudFJlbmV3IiwiX3NpZ25pblNpbGVudElmcmFtZSIsImlkVG9rZW5WYWxpZGF0aW9uIiwiX3ZhbGlkYXRlSWRUb2tlbkZyb21Ub2tlblJlZnJlc2hUb2tlbiIsImF1dGhfdGltZSIsInNpbGVudF9yZWRpcmVjdF91cmkiLCJfaWZyYW1lTmF2aWdhdG9yIiwic2lnbmluU2lsZW50Q2FsbGJhY2siLCJxdWVyeV9zdGF0dXNfcmVzcG9uc2VfdHlwZSIsIm5hdlJlc3BvbnNlIiwic2lnbmluUmVzcG9uc2UiLCJuYXZpZ2F0b3JQYXJhbXMiLCJzaWdub3V0UmVkaXJlY3QiLCJwb3N0TG9nb3V0UmVkaXJlY3RVcmkiLCJfc2lnbm91dFN0YXJ0Iiwic2lnbm91dFJlZGlyZWN0Q2FsbGJhY2siLCJfc2lnbm91dEVuZCIsInNpZ25vdXRQb3B1cCIsInBvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSIsIl9zaWdub3V0Iiwic2lnbm91dFBvcHVwQ2FsbGJhY2siLCJyZXZva2VQcm9taXNlIiwicmV2b2tlQWNjZXNzVG9rZW5PblNpZ25vdXQiLCJfcmV2b2tlSW50ZXJuYWwiLCJzaWdub3V0UmVxdWVzdCIsInNpZ25vdXRSZXNwb25zZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwic3VjY2VzcyIsIl9yZXZva2VBY2Nlc3NUb2tlbkludGVybmFsIiwiX3Jldm9rZVJlZnJlc2hUb2tlbkludGVybmFsIiwiYXRTdWNjZXNzIiwicnRTdWNjZXNzIiwic3RvcFNpbGVudFJlbmV3IiwiX3VzZXJTdG9yZSIsIl91c2VyU3RvcmVLZXkiLCJyZWRpcmVjdE5hdmlnYXRvciIsInBvcHVwTmF2aWdhdG9yIiwiaWZyYW1lTmF2aWdhdG9yIiwidXNlclN0b3JlIiwiX3VzZXJMb2FkZWQiLCJfdXNlclVubG9hZGVkIiwiX3NpbGVudFJlbmV3RXJyb3IiLCJfdXNlclNpZ25lZE91dCIsIl91c2VyU2Vzc2lvbkNoYW5nZWQiLCJyYWlzZUV2ZW50IiwicmVtb3ZlVXNlckxvYWRlZCIsInJlbW92ZVVzZXJVbmxvYWRlZCIsImFkZFNpbGVudFJlbmV3RXJyb3IiLCJyZW1vdmVTaWxlbnRSZW5ld0Vycm9yIiwiYWRkVXNlclNpZ25lZE91dCIsInJlbW92ZVVzZXJTaWduZWRPdXQiLCJhZGRVc2VyU2Vzc2lvbkNoYW5nZWQiLCJyZW1vdmVVc2VyU2Vzc2lvbkNoYW5nZWQiLCJEZWZhdWx0Q2hlY2tTZXNzaW9uSW50ZXJ2YWwiLCJEZWZhdWx0UXVlcnlTZXNzaW9uU3RhdHVzUmVzcG9uc2VUeXBlIiwic3RvcmUiLCJfcG9wdXBfcmVkaXJlY3RfdXJpIiwiX3BvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSIsIl9wb3B1cFdpbmRvd0ZlYXR1cmVzIiwiX3BvcHVwV2luZG93VGFyZ2V0IiwiX3NpbGVudF9yZWRpcmVjdF91cmkiLCJfc2lsZW50UmVxdWVzdFRpbWVvdXQiLCJfYXV0b21hdGljU2lsZW50UmVuZXciLCJfaW5jbHVkZUlkVG9rZW5JblNpbGVudFJlbmV3IiwiX21vbml0b3JTZXNzaW9uIiwiX3F1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlIiwiX3Jldm9rZUFjY2Vzc1Rva2VuT25TaWdub3V0IiwicHJlZml4IiwiX3N0b3JlIiwiX3ByZWZpeCIsImd1aWRIb2xkZXIiLCJndWlkUmVzcG9uc2UiXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUE2QyxFQUE3QyxFQUFnRCxFQUFoRCxFQUFtRCxFQUFuRCxFQUFzRCxFQUF0RCxFQUF5RCxFQUF6RCxFQUE0RCxFQUE1RCxFQUErRCxFQUEvRCxFQUFrRSxFQUFsRSxFQUFxRSxFQUFyRSxFQUF3RSxHQUF4RSxFQUE0RSxHQUE1RSxFQUFnRixHQUFoRixFQUFvRixHQUFwRixFQUF3RixHQUF4RixFQUE0RixHQUE1RixFQUFnRyxHQUFoRyxFQUFvRyxHQUFwRyxFQUF3RyxHQUF4RyxFQUE0RyxHQUE1RyxFQUFnSCxHQUFoSCxFQUFvSCxHQUFwSCxFQUF3SCxHQUF4SCxFQUE0SCxHQUE1SCxFQUFnSSxHQUFoSSxFQUFvSSxHQUFwSSxFQUF3SSxHQUF4SSxFQUE0SSxHQUE1SSxFQUFnSixHQUFoSixFQUFvSixHQUFwSixFQUF3SixHQUF4SixFQUE0SixHQUE1SixFQUFnSyxHQUFoSyxFQUFvSyxHQUFwSyxFQUF3SyxHQUF4SyxFQUE0SyxHQUE1SyxFQUFnTCxHQUFoTCxFQUFvTCxHQUFwTCxFQUF3TCxHQUF4TCxFQUE0TCxHQUE1TCxFQUFnTSxHQUFoTSxFQUFvTSxHQUFwTSxFQUF3TSxHQUF4TSxFQUE0TSxHQUE1TSxFQUFnTixHQUFoTixFQUFvTixHQUFwTixFQUF3TixHQUF4TixFQUE0TixHQUE1TixFQUFnTyxHQUFoTyxFQUFvTyxHQUFwTyxFQUF3TyxHQUF4TyxFQUE0TyxHQUE1TyxFQUFnUCxHQUFoUCxFQUFvUCxHQUFwUCxFQUF3UCxHQUF4UCxFQUE0UCxHQUE1UCxFQUFnUSxHQUFoUSxFQUFvUSxHQUFwUSxFQUF3USxHQUF4USxFQUE0USxHQUE1USxFQUFnUixHQUFoUixFQUFvUixHQUFwUixFQUF3UixHQUF4UixFQUE0UixHQUE1UixFQUFnUyxHQUFoUyxFQUFvUyxHQUFwUyxFQUF3UyxHQUF4UyxFQUE0UyxHQUE1UyxFQUFnVCxHQUFoVCxFQUFvVCxHQUFwVCxFQUF3VCxHQUF4VCxFQUE0VCxHQUE1VCxFQUFnVSxHQUFoVSxFQUFvVSxHQUFwVSxFQUF3VSxHQUF4VSxFQUE0VSxHQUE1VSxF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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0wsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLGNBQWM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxrQkFBa0I7QUFDbkQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUMvdEJBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsU0FBUztBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsbURBQW1EO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUJBQWlCO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELEVBQUU7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEM7QUFDQSxxQkFBcUIsZUFBZTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsT0FBTztBQUM5RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURBQXVELE9BQU87QUFDOUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Es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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1RBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNQRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNSRDtBQUNBO0FBQ0EsWUFBWTtBQUNaLEdBQUc7QUFDSCxZQUFZO0FBQ1o7QUFDQTs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQzlCRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDs7Ozs7Ozs7Ozs7OztBQzNCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDs7Ozs7Ozs7Ozs7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFlBQVksY0FBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEdBQUc7QUFDUjtBQUNBOzs7Ozs7Ozs7Ozs7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQyxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7OztBQ1pBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9FQUFvRSxpQ0FBaUM7QUFDckc7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0pBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQSx1Q0FBdUM7QUFDdkM7Ozs7Ozs7Ozs7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGNBQWM7QUFDdkQsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNoQkEsc0JBQXNCO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRkFBMEY7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNmQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsTUFBTTtBQUNkO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3QkE7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7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O0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxXQUFXO0FBQ3JCO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDckJEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNsQkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDVEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDVEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxVQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzNCRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNURDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ3RCRDs7Ozs7Ozs7Ozs7O0FDQUE7QUFDQTs7QUFFQSw0QkFBNEIsbUJBQW1CLDZCQUE2QixFQUFFLEVB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QTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDUkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNuQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUN0QkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNoQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNqQkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ0xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDakJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDTkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ05EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLHNCQUFzQix1QkFBdUIsV0FBVyxJQUFJO0FBQzVELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0JBQXNCLG1DQUFtQztBQUN6RCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsZ0NBQWdDO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBMEQsa0JBQWtCOztBQUU1RTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCOztBQUUzQyxvREFBb0QsNkJBQTZCOztBQUVqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsMEJBQTBCLGVBQWUsRUFBRTtBQUMzQywwQkFBMEIsZ0JBQWdCO0FBQzFDLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxPQUFPLFFBQVEsaUNBQWlDO0FBQ3BHLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN6T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkVBQTZFLDRCQUE0Qjs7QUFFekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsNkZBQTZGO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQzdDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNIRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNKRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNKRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7OztBQ0pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDSkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsNEVBQTRFLEVBQUU7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7OztBQzFEQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkJBQTZCLG1FQUFtRTtBQUNoRyxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDYkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7Ozs7Ozs7Ozs7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDWEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7O0FDUkQ7QUFDQTs7QUFFQSxvQkFBb0IsNEZBQStCOzs7Ozs7Ozs7Ozs7QUNIbkQ7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7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LGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0FDZEg7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7QUFDQTs7QUFFQSx1Q0FBdUMsMkhBQWtEOzs7Ozs7Ozs7Ozs7O0FDSHpGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzdCRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7O0FDWEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7QUNORDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNORDs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7OztBQ0FBO0FBQ0E7O0FBRUEsOEJBQThCLDRGQUErQjs7Ozs7Ozs7Ozs7O0FDSDdEO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0Qsd0JBQXdCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDekRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNMRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUNuQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDcE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVc7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBLFFBQVEsV0FBVzs7QUFFbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsV0FBVzs7QUFFbkI7QUFDQTtBQUNBLFFB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OztBQUVlLFNBQVNBLE1BQVQsR0FBa0I7QUFDN0IsUUFBSXU4QyxhQUFhLGtDQUFqQjtBQUNBLFFBQUloL0IsTUFBTSxrQkFBVjtBQUNBLFFBQUkzZCxJQUFJLENBQVI7QUFDQSxRQUFJNDhDLGVBQWUsRUFBbkI7QUFDQSxTQUFLLElBQUl6K0MsSUFBSSxDQUFiLEVBQWdCQSxJQUFJdytDLFdBQVd2K0MsTUFBL0IsRUFBdUNELEdBQXZDLEVBQTRDO0FBQ3hDLFlBQUl3K0MsV0FBV3grQyxDQUFYLE1BQWtCLEdBQWxCLElBQXlCdytDLFdBQVd4K0MsQ0FBWCxNQUFrQixHQUEvQyxFQUFvRDtBQUNoRDtBQUNBNkIsZ0JBQUlnRCxLQUFLNUMsTUFBTCxLQUFnQixFQUFoQixHQUFxQixDQUF6QjtBQUNIOztBQUVELFlBQUl1OEMsV0FBV3grQyxDQUFYLE1BQWtCLEdBQXRCLEVBQTJCO0FBQ3ZCeStDLDRCQUFnQmovQixJQUFJM2QsQ0FBSixDQUFoQjtBQUNILFNBRkQsTUFFTyxJQUFJMjhDLFdBQVd4K0MsQ0FBWCxNQUFrQixHQUF0QixFQUEyQjtBQUM5QjtBQUNBNkIsaUJBQUssR0FBTCxDQUY4QixDQUVwQjtBQUNWQSxpQkFBSyxHQUFMLENBSDhCLENBR3BCO0FBQ1Y0OEMsNEJBQWdCai9CLElBQUkzZCxDQUFKLENBQWhCO0FBQ0gsU0FMTSxNQUtBO0FBQ0g0OEMsNEJBQWdCRCxXQUFXeCtDLENBQVgsQ0FBaEI7QUFDSDtBQUNKO0FBQ0QsV0FBT3krQyxZQUFQO0FBQ0giLCJmaWxlIjoib2lkYy1jbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL3NyYy9Mb2cuanMnO1xuaW1wb3J0IHsgT2lkY0NsaWVudCB9IGZyb20gJy4vc3JjL09pZGNDbGllbnQuanMnO1xuaW1wb3J0IHsgT2lkY0NsaWVudFNldHRpbmdzIH0gZnJvbSAnLi9zcmMvT2lkY0NsaWVudFNldHRpbmdzLmpzJztcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9zcmMvV2ViU3RvcmFnZVN0YXRlU3RvcmUuanMnO1xuaW1wb3J0IHsgSW5NZW1vcnlXZWJTdG9yYWdlIH0gZnJvbSAnLi9zcmMvSW5NZW1vcnlXZWJTdG9yYWdlLmpzJztcbmltcG9ydCB7IFVzZXJNYW5hZ2VyIH0gZnJvbSAnLi9zcmMvVXNlck1hbmFnZXIuanMnO1xuaW1wb3J0IHsgQWNjZXNzVG9rZW5FdmVudHMgfSBmcm9tICcuL3NyYy9BY2Nlc3NUb2tlbkV2ZW50cy5qcyc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuL3NyYy9NZXRhZGF0YVNlcnZpY2UuanMnO1xuaW1wb3J0IHsgQ29yZG92YVBvcHVwTmF2aWdhdG9yIH0gZnJvbSAnLi9zcmMvQ29yZG92YVBvcHVwTmF2aWdhdG9yLmpzJztcbmltcG9ydCB7IENvcmRvdmFJRnJhbWVOYXZpZ2F0b3IgfSBmcm9tICcuL3NyYy9Db3Jkb3ZhSUZyYW1lTmF2aWdhdG9yLmpzJztcbmltcG9ydCB7IENoZWNrU2Vzc2lvbklGcmFtZSB9IGZyb20gJy4vc3JjL0NoZWNrU2Vzc2lvbklGcmFtZS5qcyc7XG5pbXBvcnQgeyBUb2tlblJldm9jYXRpb25DbGllbnQgfSBmcm9tICcuL3NyYy9Ub2tlblJldm9jYXRpb25DbGllbnQuanMnO1xuaW1wb3J0IHsgU2Vzc2lvbk1vbml0b3IgfSBmcm9tICcuL3NyYy9TZXNzaW9uTW9uaXRvci5qcyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL3NyYy9HbG9iYWwuanMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vc3JjL1VzZXIuanMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgTG9nLFxuICAgIE9pZGNDbGllbnQsXG4gICAgT2lkY0NsaWVudFNldHRpbmdzLFxuICAgIFdlYlN0b3JhZ2VTdGF0ZVN0b3JlLFxuICAgIEluTWVtb3J5V2ViU3RvcmFnZSxcbiAgICBVc2VyTWFuYWdlcixcbiAgICBBY2Nlc3NUb2tlbkV2ZW50cyxcbiAgICBNZXRhZGF0YVNlcnZpY2UsXG4gICAgQ29yZG92YVBvcHVwTmF2aWdhdG9yLFxuICAgIENvcmRvdmFJRnJhbWVOYXZpZ2F0b3IsXG4gICAgQ2hlY2tTZXNzaW9uSUZyYW1lLFxuICAgIFRva2VuUmV2b2NhdGlvbkNsaWVudCxcbiAgICBTZXNzaW9uTW9uaXRvcixcbiAgICBHbG9iYWwsXG4gICAgVXNlclxufTtcbiIsIi8qXG4gKiBqc3JzYXNpZ24oYWxsKSA4LjAuMTIgKDIwMTgtMDQtMjIpIChjKSAyMDEwLTIwMTggS2VuamkgVXJ1c2hpbWEgfCBranVyLmdpdGh1Yi5jb20vanNyc2FzaWduL2xpY2Vuc2VcbiAqL1xuXG52YXIgbmF2aWdhdG9yID0ge307XG5uYXZpZ2F0b3IudXNlckFnZW50ID0gZmFsc2U7XG5cbnZhciB3aW5kb3cgPSB7fTtcblxuLyohXG5Db3B5cmlnaHQgKGMpIDIwMTEsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db2RlIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZTpcbmh0dHA6Ly9kZXZlbG9wZXIueWFob28uY29tL3l1aS9saWNlbnNlLmh0bWxcbnZlcnNpb246IDIuOS4wXG4qL1xuaWYoWUFIT089PT11bmRlZmluZWQpe3ZhciBZQUhPTz17fX1ZQUhPTy5sYW5nPXtleHRlbmQ6ZnVuY3Rpb24oZyxoLGYpe2lmKCFofHwhZyl7dGhyb3cgbmV3IEVycm9yKFwiWUFIT08ubGFuZy5leHRlbmQgZmFpbGVkLCBwbGVhc2UgY2hlY2sgdGhhdCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBpbmNsdWRlZC5cIil9dmFyIGQ9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlPWgucHJvdG90eXBlO2cucHJvdG90eXBlPW5ldyBkKCk7Zy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZztnLnN1cGVyY2xhc3M9aC5wcm90b3R5cGU7aWYoaC5wcm90b3R5cGUuY29uc3RydWN0b3I9PU9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3Ipe2gucHJvdG90eXBlLmNvbnN0cnVjdG9yPWh9aWYoZil7dmFyIGI7Zm9yKGIgaW4gZil7Zy5wcm90b3R5cGVbYl09ZltiXX12YXIgZT1mdW5jdGlvbigpe30sYz1bXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXTt0cnl7aWYoL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpe2U9ZnVuY3Rpb24oaixpKXtmb3IoYj0wO2I8Yy5sZW5ndGg7Yj1iKzEpe3ZhciBsPWNbYl0saz1pW2xdO2lmKHR5cGVvZiBrPT09XCJmdW5jdGlvblwiJiZrIT1PYmplY3QucHJvdG90eXBlW2xdKXtqW2xdPWt9fX19fWNhdGNoKGEpe31lKGcucHJvdG90eXBlLGYpfX19O1xuLyohIENyeXB0b0pTIHYzLjEuMiBjb3JlLWZpeC5qc1xuICogY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzXG4gKiAoYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIGNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcbiAqIFRISVMgSVMgRklYIG9mICdjb3JlLmpzJyB0byBmaXggSG1hYyBpc3N1ZS5cbiAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL2lzc3Vlcy9kZXRhaWw/aWQ9ODRcbiAqIGh0dHBzOi8vY3J5cHRvLWpzLmdvb2dsZWNvZGUuY29tL3N2bi1oaXN0b3J5L3I2NjcvYnJhbmNoZXMvMy54L3NyYy9jb3JlLmpzXG4gKi9cbnZhciBDcnlwdG9KUz1DcnlwdG9KU3x8KGZ1bmN0aW9uKGUsZyl7dmFyIGE9e307dmFyIGI9YS5saWI9e307dmFyIGo9Yi5CYXNlPShmdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt9cmV0dXJue2V4dGVuZDpmdW5jdGlvbihwKXtuLnByb3RvdHlwZT10aGlzO3ZhciBvPW5ldyBuKCk7aWYocCl7by5taXhJbihwKX1pZighby5oYXNPd25Qcm9wZXJ0eShcImluaXRcIikpe28uaW5pdD1mdW5jdGlvbigpe28uJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1vLmluaXQucHJvdG90eXBlPW87by4kc3VwZXI9dGhpcztyZXR1cm4gb30sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIG89dGhpcy5leHRlbmQoKTtvLmluaXQuYXBwbHkobyxhcmd1bWVudHMpO3JldHVybiBvfSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbihwKXtmb3IodmFyIG8gaW4gcCl7aWYocC5oYXNPd25Qcm9wZXJ0eShvKSl7dGhpc1tvXT1wW29dfX1pZihwLmhhc093blByb3BlcnR5KFwidG9TdHJpbmdcIikpe3RoaXMudG9TdHJpbmc9cC50b1N0cmluZ319LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdC5wcm90b3R5cGUuZXh0ZW5kKHRoaXMpfX19KCkpO3ZhciBsPWIuV29yZEFycmF5PWouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKG8sbil7bz10aGlzLndvcmRzPW98fFtdO2lmKG4hPWcpe3RoaXMuc2lnQnl0ZXM9bn1lbHNle3RoaXMuc2lnQnl0ZXM9by5sZW5ndGgqNH19LHRvU3RyaW5nOmZ1bmN0aW9uKG4pe3JldHVybihufHxoKS5zdHJpbmdpZnkodGhpcyl9LGNvbmNhdDpmdW5jdGlvbih0KXt2YXIgcT10aGlzLndvcmRzO3ZhciBwPXQud29yZHM7dmFyIG49dGhpcy5zaWdCeXRlczt2YXIgcz10LnNpZ0J5dGVzO3RoaXMuY2xhbXAoKTtpZihuJTQpe2Zvcih2YXIgcj0wO3I8cztyKyspe3ZhciBvPShwW3I+Pj4yXT4+PigyNC0ociU0KSo4KSkmMjU1O3FbKG4rcik+Pj4yXXw9bzw8KDI0LSgobityKSU0KSo4KX19ZWxzZXtmb3IodmFyIHI9MDtyPHM7cis9NCl7cVsobityKT4+PjJdPXBbcj4+PjJdfX10aGlzLnNpZ0J5dGVzKz1zO3JldHVybiB0aGlzfSxjbGFtcDpmdW5jdGlvbigpe3ZhciBvPXRoaXMud29yZHM7dmFyIG49dGhpcy5zaWdCeXRlcztvW24+Pj4yXSY9NDI5NDk2NzI5NTw8KDMyLShuJTQpKjgpO28ubGVuZ3RoPWUuY2VpbChuLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBuPWouY2xvbmUuY2FsbCh0aGlzKTtuLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCk7cmV0dXJuIG59LHJhbmRvbTpmdW5jdGlvbihwKXt2YXIgbz1bXTtmb3IodmFyIG49MDtuPHA7bis9NCl7by5wdXNoKChlLnJhbmRvbSgpKjQyOTQ5NjcyOTYpfDApfXJldHVybiBuZXcgbC5pbml0KG8scCl9fSk7dmFyIG09YS5lbmM9e307dmFyIGg9bS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbihwKXt2YXIgcj1wLndvcmRzO3ZhciBvPXAuc2lnQnl0ZXM7dmFyIHE9W107Zm9yKHZhciBuPTA7bjxvO24rKyl7dmFyIHM9KHJbbj4+PjJdPj4+KDI0LShuJTQpKjgpKSYyNTU7cS5wdXNoKChzPj4+NCkudG9TdHJpbmcoMTYpKTtxLnB1c2goKHMmMTUpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHEuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24ocCl7dmFyIG49cC5sZW5ndGg7dmFyIHE9W107Zm9yKHZhciBvPTA7bzxuO28rPTIpe3Fbbz4+PjNdfD1wYXJzZUludChwLnN1YnN0cihvLDIpLDE2KTw8KDI0LShvJTgpKjQpfXJldHVybiBuZXcgbC5pbml0KHEsbi8yKX19O3ZhciBkPW0uTGF0aW4xPXtzdHJpbmdpZnk6ZnVuY3Rpb24ocSl7dmFyIHI9cS53b3Jkczt2YXIgcD1xLnNpZ0J5dGVzO3ZhciBuPVtdO2Zvcih2YXIgbz0wO288cDtvKyspe3ZhciBzPShyW28+Pj4yXT4+PigyNC0obyU0KSo4KSkmMjU1O24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbihwKXt2YXIgbj1wLmxlbmd0aDt2YXIgcT1bXTtmb3IodmFyIG89MDtvPG47bysrKXtxW28+Pj4yXXw9KHAuY2hhckNvZGVBdChvKSYyNTUpPDwoMjQtKG8lNCkqOCl9cmV0dXJuIG5ldyBsLmluaXQocSxuKX19O3ZhciBjPW0uVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKG4pe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShkLnN0cmluZ2lmeShuKSkpfWNhdGNoKG8pe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24obil7cmV0dXJuIGQucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KG4pKSl9fTt2YXIgaT1iLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG09ai5leHRlbmQoe3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgbC5pbml0KCk7dGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKG4pe2lmKHR5cGVvZiBuPT1cInN0cmluZ1wiKXtuPWMucGFyc2Uobil9dGhpcy5fZGF0YS5jb25jYXQobik7dGhpcy5fbkRhdGFCeXRlcys9bi5zaWdCeXRlc30sX3Byb2Nlc3M6ZnVuY3Rpb24odyl7dmFyIHE9dGhpcy5fZGF0YTt2YXIgeD1xLndvcmRzO3ZhciBuPXEuc2lnQnl0ZXM7dmFyIHQ9dGhpcy5ibG9ja1NpemU7dmFyIHY9dCo0O3ZhciB1PW4vdjtpZih3KXt1PWUuY2VpbCh1KX1lbHNle3U9ZS5tYXgoKHV8MCktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKX12YXIgcz11KnQ7dmFyIHI9ZS5taW4ocyo0LG4pO2lmKHMpe2Zvcih2YXIgcD0wO3A8cztwKz10KXt0aGlzLl9kb1Byb2Nlc3NCbG9jayh4LHApfXZhciBvPXguc3BsaWNlKDAscyk7cS5zaWdCeXRlcy09cn1yZXR1cm4gbmV3IGwuaW5pdChvLHIpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBuPWouY2xvbmUuY2FsbCh0aGlzKTtuLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKTtyZXR1cm4gbn0sX21pbkJ1ZmZlclNpemU6MH0pO3ZhciBmPWIuSGFzaGVyPWkuZXh0ZW5kKHtjZmc6ai5leHRlbmQoKSxpbml0OmZ1bmN0aW9uKG4pe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZChuKTt0aGlzLnJlc2V0KCl9LHJlc2V0OmZ1bmN0aW9uKCl7aS5yZXNldC5jYWxsKHRoaXMpO3RoaXMuX2RvUmVzZXQoKX0sdXBkYXRlOmZ1bmN0aW9uKG4pe3RoaXMuX2FwcGVuZChuKTt0aGlzLl9wcm9jZXNzKCk7cmV0dXJuIHRoaXN9LGZpbmFsaXplOmZ1bmN0aW9uKG4pe2lmKG4pe3RoaXMuX2FwcGVuZChuKX12YXIgbz10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIG99LGJsb2NrU2l6ZTo1MTIvMzIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocCxvKXtyZXR1cm4gbmV3IG4uaW5pdChvKS5maW5hbGl6ZShwKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihwLG8pe3JldHVybiBuZXcgay5ITUFDLmluaXQobixvKS5maW5hbGl6ZShwKX19fSk7dmFyIGs9YS5hbGdvPXt9O3JldHVybiBhfShNYXRoKSk7XG4vKlxuQ3J5cHRvSlMgdjMuMS4yIHg2NC1jb3JlLW1pbi5qc1xuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcbiovXG4oZnVuY3Rpb24oZyl7dmFyIGE9Q3J5cHRvSlMsZj1hLmxpYixlPWYuQmFzZSxoPWYuV29yZEFycmF5LGE9YS54NjQ9e307YS5Xb3JkPWUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGIsYyl7dGhpcy5oaWdoPWI7dGhpcy5sb3c9Y319KTthLldvcmRBcnJheT1lLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihiLGMpe2I9dGhpcy53b3Jkcz1ifHxbXTt0aGlzLnNpZ0J5dGVzPWMhPWc/Yzo4KmIubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgYj10aGlzLndvcmRzLGM9Yi5sZW5ndGgsYT1bXSxkPTA7ZDxjO2QrKyl7dmFyIGU9YltkXTthLnB1c2goZS5oaWdoKTthLnB1c2goZS5sb3cpfXJldHVybiBoLmNyZWF0ZShhLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgYj1lLmNsb25lLmNhbGwodGhpcyksYz1iLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksYT1jLmxlbmd0aCxkPTA7ZDxhO2QrKyljW2RdPWNbZF0uY2xvbmUoKTtyZXR1cm4gYn19KX0pKCk7XG5cbi8qXG5DcnlwdG9KUyB2My4xLjIgZW5jLWJhc2U2NC5qc1xuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcbiovXG4oZnVuY3Rpb24oKXt2YXIgaD1DcnlwdG9KUyxqPWgubGliLldvcmRBcnJheTtoLmVuYy5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbihiKXt2YXIgZT1iLndvcmRzLGY9Yi5zaWdCeXRlcyxjPXRoaXMuX21hcDtiLmNsYW1wKCk7Yj1bXTtmb3IodmFyIGE9MDthPGY7YSs9Mylmb3IodmFyIGQ9KGVbYT4+PjJdPj4+MjQtOCooYSU0KSYyNTUpPDwxNnwoZVthKzE+Pj4yXT4+PjI0LTgqKChhKzEpJTQpJjI1NSk8PDh8ZVthKzI+Pj4yXT4+PjI0LTgqKChhKzIpJTQpJjI1NSxnPTA7ND5nJiZhKzAuNzUqZzxmO2crKyliLnB1c2goYy5jaGFyQXQoZD4+PjYqKDMtZykmNjMpKTtpZihlPWMuY2hhckF0KDY0KSlmb3IoO2IubGVuZ3RoJTQ7KWIucHVzaChlKTtyZXR1cm4gYi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbihiKXt2YXIgZT1iLmxlbmd0aCxmPXRoaXMuX21hcCxjPWYuY2hhckF0KDY0KTtjJiYoYz1iLmluZGV4T2YoYyksLTEhPWMmJihlPWMpKTtmb3IodmFyIGM9W10sYT0wLGQ9MDtkPFxuZTtkKyspaWYoZCU0KXt2YXIgZz1mLmluZGV4T2YoYi5jaGFyQXQoZC0xKSk8PDIqKGQlNCksaD1mLmluZGV4T2YoYi5jaGFyQXQoZCkpPj4+Ni0yKihkJTQpO2NbYT4+PjJdfD0oZ3xoKTw8MjQtOCooYSU0KTthKyt9cmV0dXJuIGouY3JlYXRlKGMsYSl9LF9tYXA6XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwifX0pKCk7XG5cbi8qXG5DcnlwdG9KUyB2My4xLjIgc2hhMjU2LW1pbi5qc1xuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzXG4oYykgMjAwOS0yMDEzIGJ5IEplZmYgTW90dC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy93aWtpL0xpY2Vuc2VcbiovXG4oZnVuY3Rpb24oayl7Zm9yKHZhciBnPUNyeXB0b0pTLGg9Zy5saWIsdj1oLldvcmRBcnJheSxqPWguSGFzaGVyLGg9Zy5hbGdvLHM9W10sdD1bXSx1PWZ1bmN0aW9uKHEpe3JldHVybiA0Mjk0OTY3Mjk2KihxLShxfDApKXwwfSxsPTIsYj0wOzY0PmI7KXt2YXIgZDthOntkPWw7Zm9yKHZhciB3PWsuc3FydChkKSxyPTI7cjw9dztyKyspaWYoIShkJXIpKXtkPSExO2JyZWFrIGF9ZD0hMH1kJiYoOD5iJiYoc1tiXT11KGsucG93KGwsMC41KSkpLHRbYl09dShrLnBvdyhsLDEvMykpLGIrKyk7bCsrfXZhciBuPVtdLGg9aC5TSEEyNTY9ai5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgdi5pbml0KHMuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocSxoKXtmb3IodmFyIGE9dGhpcy5faGFzaC53b3JkcyxjPWFbMF0sZD1hWzFdLGI9YVsyXSxrPWFbM10sZj1hWzRdLGc9YVs1XSxqPWFbNl0sbD1hWzddLGU9MDs2ND5lO2UrKyl7aWYoMTY+ZSluW2VdPVxucVtoK2VdfDA7ZWxzZXt2YXIgbT1uW2UtMTVdLHA9bltlLTJdO25bZV09KChtPDwyNXxtPj4+NyleKG08PDE0fG0+Pj4xOClebT4+PjMpK25bZS03XSsoKHA8PDE1fHA+Pj4xNyleKHA8PDEzfHA+Pj4xOSlecD4+PjEwKStuW2UtMTZdfW09bCsoKGY8PDI2fGY+Pj42KV4oZjw8MjF8Zj4+PjExKV4oZjw8N3xmPj4+MjUpKSsoZiZnXn5mJmopK3RbZV0rbltlXTtwPSgoYzw8MzB8Yz4+PjIpXihjPDwxOXxjPj4+MTMpXihjPDwxMHxjPj4+MjIpKSsoYyZkXmMmYl5kJmIpO2w9ajtqPWc7Zz1mO2Y9ayttfDA7az1iO2I9ZDtkPWM7Yz1tK3B8MH1hWzBdPWFbMF0rY3wwO2FbMV09YVsxXStkfDA7YVsyXT1hWzJdK2J8MDthWzNdPWFbM10ra3wwO2FbNF09YVs0XStmfDA7YVs1XT1hWzVdK2d8MDthWzZdPWFbNl0ranwwO2FbN109YVs3XStsfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5fZGF0YSxiPWQud29yZHMsYT04KnRoaXMuX25EYXRhQnl0ZXMsYz04KmQuc2lnQnl0ZXM7XG5iW2M+Pj41XXw9MTI4PDwyNC1jJTMyO2JbKGMrNjQ+Pj45PDw0KSsxNF09ay5mbG9vcihhLzQyOTQ5NjcyOTYpO2JbKGMrNjQ+Pj45PDw0KSsxNV09YTtkLnNpZ0J5dGVzPTQqYi5sZW5ndGg7dGhpcy5fcHJvY2VzcygpO3JldHVybiB0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciBiPWouY2xvbmUuY2FsbCh0aGlzKTtiLl9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKTtyZXR1cm4gYn19KTtnLlNIQTI1Nj1qLl9jcmVhdGVIZWxwZXIoaCk7Zy5IbWFjU0hBMjU2PWouX2NyZWF0ZUhtYWNIZWxwZXIoaCl9KShNYXRoKTtcblxuLypcbkNyeXB0b0pTIHYzLjEuMiBzaGE1MTItbWluLmpzXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbihmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtyZXR1cm4gZC5jcmVhdGUuYXBwbHkoZCxhcmd1bWVudHMpfWZvcih2YXIgbj1DcnlwdG9KUyxyPW4ubGliLkhhc2hlcixlPW4ueDY0LGQ9ZS5Xb3JkLFQ9ZS5Xb3JkQXJyYXksZT1uLmFsZ28sZWE9W2EoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxhKDE4OTk0NDc0NDEsNjAyODkxNzI1KSxhKDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksYSgzOTIxMDA5NTczLDIxNzMyOTU1NDgpLGEoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLGEoMTUwODk3MDk5MywzMDUzODM0MjY1KSxhKDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksYSgyODcwNzYzMjIxLDM2NjQ2MDk1NjApLGEoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxhKDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxhKDYwNzIyNTI3OCwxMzIzNjEwNzY0KSxhKDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksYSgxOTI1MDc4Mzg4LDQwNjgxODIzODMpLGEoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLGEoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLFxuYSgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLGEoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxhKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxhKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxhKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxhKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxhKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksYSgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLGEoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxhKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksYSgyODIxODM0MzQ5LDc2Njc4NDAxNiksYSgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLGEoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxhKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksYSgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLGEoMTEzOTI2OTkzLDM3NTgzMjYzODMpLGEoMzM4MjQxODk1LDE2ODcxNzkzNiksYSg2NjYzMDcyMDUsMTE4ODE3OTk2NCksYSg3NzM1Mjk5MTIsMTU0NjA0NTczNCksYSgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLGEoMTM5NjE4MjI5MSxcbjI2NDM4MzM4MjMpLGEoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxhKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksYSgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLGEoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLGEoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxhKDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksYSgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLGEoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLGEoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxhKDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksYSg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLGEoMjc1NDIzMzQ0LDg1MTE2OTcyMCksYSg0MzAyMjc3MzQsMzEwMDgyMzc1MiksYSg1MDY5NDg2MTYsMTM2MzI1ODE5NSksYSg2NTkwNjA1NTYsMzc1MDY4NTU5MyksYSg4ODM5OTc4NzcsMzc4NTA1MDI4MCksYSg5NTgxMzk1NzEsMzMxODMwNzQyNyksYSgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLGEoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxhKDE3NDc4NzM3NzksMzYwMjAzNjg5OSksXG5hKDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksYSgyMDI0MTA0ODE1LDExMjU1OTI5MjgpLGEoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSxhKDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxhKDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxhKDI3NTY3MzQxODcsMzczMzExMDI0OSksYSgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLGEoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxhKDMzOTE1Njk2MTQsMzkyODM4MzkwMCksYSgzNTE1MjY3MjcxLDU2NjI4MDcxMSksYSgzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLGEoNDExODYzMDI3MSw0MDAwMjM5OTkyKSxhKDExNjQxODQ3NCwxOTE0MTM4NTU0KSxhKDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxhKDI4OTM4MDM1NiwzMjAzOTkzMDA2KSxhKDQ2MDM5MzI2OSwzMjA2MjAzMTUpLGEoNjg1NDcxNzMzLDU4NzQ5NjgzNiksYSg4NTIxNDI5NzEsMTA4Njc5Mjg1MSksYSgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksYSgxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLGEoMTI4ODAzMzQ3MCxcbjM0MDk4NTUxNTgpLGEoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxhKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxhKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLHY9W10sdz0wOzgwPnc7dysrKXZbd109YSgpO2U9ZS5TSEE1MTI9ci5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgVC5pbml0KFtuZXcgZC5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IGQuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBkLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgZC5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IGQuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBkLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBkLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBkLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbihhLGQpe2Zvcih2YXIgZj10aGlzLl9oYXNoLndvcmRzLFxuRj1mWzBdLGU9ZlsxXSxuPWZbMl0scj1mWzNdLEc9Zls0XSxIPWZbNV0sST1mWzZdLGY9Zls3XSx3PUYuaGlnaCxKPUYubG93LFg9ZS5oaWdoLEs9ZS5sb3csWT1uLmhpZ2gsTD1uLmxvdyxaPXIuaGlnaCxNPXIubG93LCQ9Ry5oaWdoLE49Ry5sb3csYWE9SC5oaWdoLE89SC5sb3csYmE9SS5oaWdoLFA9SS5sb3csY2E9Zi5oaWdoLFE9Zi5sb3csaz13LGc9Six6PVgseD1LLEE9WSx5PUwsVT1aLEI9TSxsPSQsaD1OLFI9YWEsQz1PLFM9YmEsRD1QLFY9Y2EsRT1RLG09MDs4MD5tO20rKyl7dmFyIHM9dlttXTtpZigxNj5tKXZhciBqPXMuaGlnaD1hW2QrMiptXXwwLGI9cy5sb3c9YVtkKzIqbSsxXXwwO2Vsc2V7dmFyIGo9dlttLTE1XSxiPWouaGlnaCxwPWoubG93LGo9KGI+Pj4xfHA8PDMxKV4oYj4+Pjh8cDw8MjQpXmI+Pj43LHA9KHA+Pj4xfGI8PDMxKV4ocD4+Pjh8Yjw8MjQpXihwPj4+N3xiPDwyNSksdT12W20tMl0sYj11LmhpZ2gsYz11Lmxvdyx1PShiPj4+MTl8Yzw8MTMpXihiPDxcbjN8Yz4+PjI5KV5iPj4+NixjPShjPj4+MTl8Yjw8MTMpXihjPDwzfGI+Pj4yOSleKGM+Pj42fGI8PDI2KSxiPXZbbS03XSxXPWIuaGlnaCx0PXZbbS0xNl0scT10LmhpZ2gsdD10LmxvdyxiPXArYi5sb3csaj1qK1crKGI+Pj4wPHA+Pj4wPzE6MCksYj1iK2Msaj1qK3UrKGI+Pj4wPGM+Pj4wPzE6MCksYj1iK3Qsaj1qK3ErKGI+Pj4wPHQ+Pj4wPzE6MCk7cy5oaWdoPWo7cy5sb3c9Yn12YXIgVz1sJlJefmwmUyx0PWgmQ15+aCZELHM9ayZ6XmsmQV56JkEsVD1nJnheZyZ5XngmeSxwPShrPj4+Mjh8Zzw8NCleKGs8PDMwfGc+Pj4yKV4oazw8MjV8Zz4+PjcpLHU9KGc+Pj4yOHxrPDw0KV4oZzw8MzB8az4+PjIpXihnPDwyNXxrPj4+NyksYz1lYVttXSxmYT1jLmhpZ2gsZGE9Yy5sb3csYz1FKygoaD4+PjE0fGw8PDE4KV4oaD4+PjE4fGw8PDE0KV4oaDw8MjN8bD4+PjkpKSxxPVYrKChsPj4+MTR8aDw8MTgpXihsPj4+MTh8aDw8MTQpXihsPDwyM3xoPj4+OSkpKyhjPj4+MDxFPj4+MD8xOlxuMCksYz1jK3QscT1xK1crKGM+Pj4wPHQ+Pj4wPzE6MCksYz1jK2RhLHE9cStmYSsoYz4+PjA8ZGE+Pj4wPzE6MCksYz1jK2IscT1xK2orKGM+Pj4wPGI+Pj4wPzE6MCksYj11K1Qscz1wK3MrKGI+Pj4wPHU+Pj4wPzE6MCksVj1TLEU9RCxTPVIsRD1DLFI9bCxDPWgsaD1CK2N8MCxsPVUrcSsoaD4+PjA8Qj4+PjA/MTowKXwwLFU9QSxCPXksQT16LHk9eCx6PWsseD1nLGc9YytifDAsaz1xK3MrKGc+Pj4wPGM+Pj4wPzE6MCl8MH1KPUYubG93PUorZztGLmhpZ2g9dytrKyhKPj4+MDxnPj4+MD8xOjApO0s9ZS5sb3c9Syt4O2UuaGlnaD1YK3orKEs+Pj4wPHg+Pj4wPzE6MCk7TD1uLmxvdz1MK3k7bi5oaWdoPVkrQSsoTD4+PjA8eT4+PjA/MTowKTtNPXIubG93PU0rQjtyLmhpZ2g9WitVKyhNPj4+MDxCPj4+MD8xOjApO049Ry5sb3c9TitoO0cuaGlnaD0kK2wrKE4+Pj4wPGg+Pj4wPzE6MCk7Tz1ILmxvdz1PK0M7SC5oaWdoPWFhK1IrKE8+Pj4wPEM+Pj4wPzE6MCk7UD1JLmxvdz1QK0Q7XG5JLmhpZ2g9YmErUysoUD4+PjA8RD4+PjA/MTowKTtRPWYubG93PVErRTtmLmhpZ2g9Y2ErVisoUT4+PjA8RT4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9kYXRhLGQ9YS53b3JkcyxmPTgqdGhpcy5fbkRhdGFCeXRlcyxlPTgqYS5zaWdCeXRlcztkW2U+Pj41XXw9MTI4PDwyNC1lJTMyO2RbKGUrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGYvNDI5NDk2NzI5Nik7ZFsoZSsxMjg+Pj4xMDw8NSkrMzFdPWY7YS5zaWdCeXRlcz00KmQubGVuZ3RoO3RoaXMuX3Byb2Nlc3MoKTtyZXR1cm4gdGhpcy5faGFzaC50b1gzMigpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBhPXIuY2xvbmUuY2FsbCh0aGlzKTthLl9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKTtyZXR1cm4gYX0sYmxvY2tTaXplOjMyfSk7bi5TSEE1MTI9ci5fY3JlYXRlSGVscGVyKGUpO24uSG1hY1NIQTUxMj1yLl9jcmVhdGVIbWFjSGVscGVyKGUpfSkoKTtcblxuLypcbkNyeXB0b0pTIHYzLjEuMiBzaGEzODQtbWluLmpzXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbihmdW5jdGlvbigpe3ZhciBjPUNyeXB0b0pTLGE9Yy54NjQsYj1hLldvcmQsZT1hLldvcmRBcnJheSxhPWMuYWxnbyxkPWEuU0hBNTEyLGE9YS5TSEEzODQ9ZC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgZS5pbml0KFtuZXcgYi5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGIuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGIuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGIuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGIuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBiLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgYi5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGIuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIGE9ZC5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO2Euc2lnQnl0ZXMtPTE2O3JldHVybiBhfX0pO2MuU0hBMzg0PVxuZC5fY3JlYXRlSGVscGVyKGEpO2MuSG1hY1NIQTM4ND1kLl9jcmVhdGVIbWFjSGVscGVyKGEpfSkoKTtcblxuLyohIChjKSBUb20gV3UgfCBodHRwOi8vd3d3LWNzLXN0dWRlbnRzLnN0YW5mb3JkLmVkdS9+dGp3L2pzYm4vXG4gKi9cbnZhciBiNjRtYXA9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7dmFyIGI2NHBhZD1cIj1cIjtmdW5jdGlvbiBoZXgyYjY0KGQpe3ZhciBiO3ZhciBlO3ZhciBhPVwiXCI7Zm9yKGI9MDtiKzM8PWQubGVuZ3RoO2IrPTMpe2U9cGFyc2VJbnQoZC5zdWJzdHJpbmcoYixiKzMpLDE2KTthKz1iNjRtYXAuY2hhckF0KGU+PjYpK2I2NG1hcC5jaGFyQXQoZSY2Myl9aWYoYisxPT1kLmxlbmd0aCl7ZT1wYXJzZUludChkLnN1YnN0cmluZyhiLGIrMSksMTYpO2ErPWI2NG1hcC5jaGFyQXQoZTw8Mil9ZWxzZXtpZihiKzI9PWQubGVuZ3RoKXtlPXBhcnNlSW50KGQuc3Vic3RyaW5nKGIsYisyKSwxNik7YSs9YjY0bWFwLmNoYXJBdChlPj4yKStiNjRtYXAuY2hhckF0KChlJjMpPDw0KX19aWYoYjY0cGFkKXt3aGlsZSgoYS5sZW5ndGgmMyk+MCl7YSs9YjY0cGFkfX1yZXR1cm4gYX1mdW5jdGlvbiBiNjR0b2hleChmKXt2YXIgZD1cIlwiO3ZhciBlO3ZhciBiPTA7dmFyIGM7dmFyIGE7Zm9yKGU9MDtlPGYubGVuZ3RoOysrZSl7aWYoZi5jaGFyQXQoZSk9PWI2NHBhZCl7YnJlYWt9YT1iNjRtYXAuaW5kZXhPZihmLmNoYXJBdChlKSk7aWYoYTwwKXtjb250aW51ZX1pZihiPT0wKXtkKz1pbnQyY2hhcihhPj4yKTtjPWEmMztiPTF9ZWxzZXtpZihiPT0xKXtkKz1pbnQyY2hhcigoYzw8Mil8KGE+PjQpKTtjPWEmMTU7Yj0yfWVsc2V7aWYoYj09Mil7ZCs9aW50MmNoYXIoYyk7ZCs9aW50MmNoYXIoYT4+Mik7Yz1hJjM7Yj0zfWVsc2V7ZCs9aW50MmNoYXIoKGM8PDIpfChhPj40KSk7ZCs9aW50MmNoYXIoYSYxNSk7Yj0wfX19fWlmKGI9PTEpe2QrPWludDJjaGFyKGM8PDIpfXJldHVybiBkfWZ1bmN0aW9uIGI2NHRvQkEoZSl7dmFyIGQ9YjY0dG9oZXgoZSk7dmFyIGM7dmFyIGI9bmV3IEFycmF5KCk7Zm9yKGM9MDsyKmM8ZC5sZW5ndGg7KytjKXtiW2NdPXBhcnNlSW50KGQuc3Vic3RyaW5nKDIqYywyKmMrMiksMTYpfXJldHVybiBifTtcbi8qISAoYykgVG9tIFd1IHwgaHR0cDovL3d3dy1jcy1zdHVkZW50cy5zdGFuZm9yZC5lZHUvfnRqdy9qc2JuL1xuICovXG52YXIgZGJpdHM7dmFyIGNhbmFyeT0yNDQ4Mzc4MTQwOTQ1OTA7dmFyIGpfbG09KChjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MCk7ZnVuY3Rpb24gQmlnSW50ZWdlcihlLGQsZil7aWYoZSE9bnVsbCl7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpe3RoaXMuZnJvbU51bWJlcihlLGQsZil9ZWxzZXtpZihkPT1udWxsJiZcInN0cmluZ1wiIT10eXBlb2YgZSl7dGhpcy5mcm9tU3RyaW5nKGUsMjU2KX1lbHNle3RoaXMuZnJvbVN0cmluZyhlLGQpfX19fWZ1bmN0aW9uIG5iaSgpe3JldHVybiBuZXcgQmlnSW50ZWdlcihudWxsKX1mdW5jdGlvbiBhbTEoZixhLGIsZSxoLGcpe3doaWxlKC0tZz49MCl7dmFyIGQ9YSp0aGlzW2YrK10rYltlXStoO2g9TWF0aC5mbG9vcihkLzY3MTA4ODY0KTtiW2UrK109ZCY2NzEwODg2M31yZXR1cm4gaH1mdW5jdGlvbiBhbTIoZixxLHIsZSxvLGEpe3ZhciBrPXEmMzI3NjcscD1xPj4xNTt3aGlsZSgtLWE+PTApe3ZhciBkPXRoaXNbZl0mMzI3Njc7dmFyIGc9dGhpc1tmKytdPj4xNTt2YXIgYj1wKmQrZyprO2Q9aypkKygoYiYzMjc2Nyk8PDE1KStyW2VdKyhvJjEwNzM3NDE4MjMpO289KGQ+Pj4zMCkrKGI+Pj4xNSkrcCpnKyhvPj4+MzApO3JbZSsrXT1kJjEwNzM3NDE4MjN9cmV0dXJuIG99ZnVuY3Rpb24gYW0zKGYscSxyLGUsbyxhKXt2YXIgaz1xJjE2MzgzLHA9cT4+MTQ7d2hpbGUoLS1hPj0wKXt2YXIgZD10aGlzW2ZdJjE2MzgzO3ZhciBnPXRoaXNbZisrXT4+MTQ7dmFyIGI9cCpkK2cqaztkPWsqZCsoKGImMTYzODMpPDwxNCkrcltlXStvO289KGQ+PjI4KSsoYj4+MTQpK3AqZztyW2UrK109ZCYyNjg0MzU0NTV9cmV0dXJuIG99aWYoal9sbSYmKG5hdmlnYXRvci5hcHBOYW1lPT1cIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiKSl7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2V7aWYoal9sbSYmKG5hdmlnYXRvci5hcHBOYW1lIT1cIk5ldHNjYXBlXCIpKXtCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbT1hbTE7ZGJpdHM9MjZ9ZWxzZXtCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbT1hbTM7ZGJpdHM9Mjh9fUJpZ0ludGVnZXIucHJvdG90eXBlLkRCPWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkRNPSgoMTw8ZGJpdHMpLTEpO0JpZ0ludGVnZXIucHJvdG90eXBlLkRWPSgxPDxkYml0cyk7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPVwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCI7dmFyIEJJX1JDPW5ldyBBcnJheSgpO3ZhciBycix2djtycj1cIjBcIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpe0JJX1JDW3JyKytdPXZ2fXJyPVwiYVwiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpe0JJX1JDW3JyKytdPXZ2fXJyPVwiQVwiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpe0JJX1JDW3JyKytdPXZ2fWZ1bmN0aW9uIGludDJjaGFyKGEpe3JldHVybiBCSV9STS5jaGFyQXQoYSl9ZnVuY3Rpb24gaW50QXQoYixhKXt2YXIgZD1CSV9SQ1tiLmNoYXJDb2RlQXQoYSldO3JldHVybihkPT1udWxsKT8tMTpkfWZ1bmN0aW9uIGJucENvcHlUbyhiKXtmb3IodmFyIGE9dGhpcy50LTE7YT49MDstLWEpe2JbYV09dGhpc1thXX1iLnQ9dGhpcy50O2Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludChhKXt0aGlzLnQ9MTt0aGlzLnM9KGE8MCk/LTE6MDtpZihhPjApe3RoaXNbMF09YX1lbHNle2lmKGE8LTEpe3RoaXNbMF09YSt0aGlzLkRWfWVsc2V7dGhpcy50PTB9fX1mdW5jdGlvbiBuYnYoYSl7dmFyIGI9bmJpKCk7Yi5mcm9tSW50KGEpO3JldHVybiBifWZ1bmN0aW9uIGJucEZyb21TdHJpbmcoaCxjKXt2YXIgZTtpZihjPT0xNil7ZT00fWVsc2V7aWYoYz09OCl7ZT0zfWVsc2V7aWYoYz09MjU2KXtlPTh9ZWxzZXtpZihjPT0yKXtlPTF9ZWxzZXtpZihjPT0zMil7ZT01fWVsc2V7aWYoYz09NCl7ZT0yfWVsc2V7dGhpcy5mcm9tUmFkaXgoaCxjKTtyZXR1cm59fX19fX10aGlzLnQ9MDt0aGlzLnM9MDt2YXIgZz1oLmxlbmd0aCxkPWZhbHNlLGY9MDt3aGlsZSgtLWc+PTApe3ZhciBhPShlPT04KT9oW2ddJjI1NTppbnRBdChoLGcpO2lmKGE8MCl7aWYoaC5jaGFyQXQoZyk9PVwiLVwiKXtkPXRydWV9Y29udGludWV9ZD1mYWxzZTtpZihmPT0wKXt0aGlzW3RoaXMudCsrXT1hfWVsc2V7aWYoZitlPnRoaXMuREIpe3RoaXNbdGhpcy50LTFdfD0oYSYoKDE8PCh0aGlzLkRCLWYpKS0xKSk8PGY7dGhpc1t0aGlzLnQrK109KGE+Pih0aGlzLkRCLWYpKX1lbHNle3RoaXNbdGhpcy50LTFdfD1hPDxmfX1mKz1lO2lmKGY+PXRoaXMuREIpe2YtPXRoaXMuREJ9fWlmKGU9PTgmJihoWzBdJjEyOCkhPTApe3RoaXMucz0tMTtpZihmPjApe3RoaXNbdGhpcy50LTFdfD0oKDE8PCh0aGlzLkRCLWYpKS0xKTw8Zn19dGhpcy5jbGFtcCgpO2lmKGQpe0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHRoaXMpfX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBhPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YSl7LS10aGlzLnR9fWZ1bmN0aW9uIGJuVG9TdHJpbmcoYyl7aWYodGhpcy5zPDApe3JldHVyblwiLVwiK3RoaXMubmVnYXRlKCkudG9TdHJpbmcoYyl9dmFyIGU7aWYoYz09MTYpe2U9NH1lbHNle2lmKGM9PTgpe2U9M31lbHNle2lmKGM9PTIpe2U9MX1lbHNle2lmKGM9PTMyKXtlPTV9ZWxzZXtpZihjPT00KXtlPTJ9ZWxzZXtyZXR1cm4gdGhpcy50b1JhZGl4KGMpfX19fX12YXIgZz0oMTw8ZSktMSxsLGE9ZmFsc2UsaD1cIlwiLGY9dGhpcy50O3ZhciBqPXRoaXMuREItKGYqdGhpcy5EQiklZTtpZihmLS0+MCl7aWYoajx0aGlzLkRCJiYobD10aGlzW2ZdPj5qKT4wKXthPXRydWU7aD1pbnQyY2hhcihsKX13aGlsZShmPj0wKXtpZihqPGUpe2w9KHRoaXNbZl0mKCgxPDxqKS0xKSk8PChlLWopO2x8PXRoaXNbLS1mXT4+KGorPXRoaXMuREItZSl9ZWxzZXtsPSh0aGlzW2ZdPj4oai09ZSkpJmc7aWYoajw9MCl7ais9dGhpcy5EQjstLWZ9fWlmKGw+MCl7YT10cnVlfWlmKGEpe2grPWludDJjaGFyKGwpfX19cmV0dXJuIGE/aDpcIjBcIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciBhPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLGEpO3JldHVybiBhfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuKHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRoaXN9ZnVuY3Rpb24gYm5Db21wYXJlVG8oYil7dmFyIGQ9dGhpcy5zLWIucztpZihkIT0wKXtyZXR1cm4gZH12YXIgYz10aGlzLnQ7ZD1jLWIudDtpZihkIT0wKXtyZXR1cm4odGhpcy5zPDApPy1kOmR9d2hpbGUoLS1jPj0wKXtpZigoZD10aGlzW2NdLWJbY10pIT0wKXtyZXR1cm4gZH19cmV0dXJuIDB9ZnVuY3Rpb24gbmJpdHMoYSl7dmFyIGM9MSxiO2lmKChiPWE+Pj4xNikhPTApe2E9YjtjKz0xNn1pZigoYj1hPj44KSE9MCl7YT1iO2MrPTh9aWYoKGI9YT4+NCkhPTApe2E9YjtjKz00fWlmKChiPWE+PjIpIT0wKXthPWI7Yys9Mn1pZigoYj1hPj4xKSE9MCl7YT1iO2MrPTF9cmV0dXJuIGN9ZnVuY3Rpb24gYm5CaXRMZW5ndGgoKXtpZih0aGlzLnQ8PTApe3JldHVybiAwfXJldHVybiB0aGlzLkRCKih0aGlzLnQtMSkrbmJpdHModGhpc1t0aGlzLnQtMV1eKHRoaXMucyZ0aGlzLkRNKSl9ZnVuY3Rpb24gYm5wRExTaGlmdFRvKGMsYil7dmFyIGE7Zm9yKGE9dGhpcy50LTE7YT49MDstLWEpe2JbYStjXT10aGlzW2FdfWZvcihhPWMtMTthPj0wOy0tYSl7YlthXT0wfWIudD10aGlzLnQrYztiLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhjLGIpe2Zvcih2YXIgYT1jO2E8dGhpcy50OysrYSl7YlthLWNdPXRoaXNbYV19Yi50PU1hdGgubWF4KHRoaXMudC1jLDApO2Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wTFNoaWZ0VG8oaixlKXt2YXIgYj1qJXRoaXMuREI7dmFyIGE9dGhpcy5EQi1iO3ZhciBnPSgxPDxhKS0xO3ZhciBmPU1hdGguZmxvb3Ioai90aGlzLkRCKSxoPSh0aGlzLnM8PGIpJnRoaXMuRE0sZDtmb3IoZD10aGlzLnQtMTtkPj0wOy0tZCl7ZVtkK2YrMV09KHRoaXNbZF0+PmEpfGg7aD0odGhpc1tkXSZnKTw8Yn1mb3IoZD1mLTE7ZD49MDstLWQpe2VbZF09MH1lW2ZdPWg7ZS50PXRoaXMudCtmKzE7ZS5zPXRoaXMucztlLmNsYW1wKCl9ZnVuY3Rpb24gYm5wUlNoaWZ0VG8oZyxkKXtkLnM9dGhpcy5zO3ZhciBlPU1hdGguZmxvb3IoZy90aGlzLkRCKTtpZihlPj10aGlzLnQpe2QudD0wO3JldHVybn12YXIgYj1nJXRoaXMuREI7dmFyIGE9dGhpcy5EQi1iO3ZhciBmPSgxPDxiKS0xO2RbMF09dGhpc1tlXT4+Yjtmb3IodmFyIGM9ZSsxO2M8dGhpcy50OysrYyl7ZFtjLWUtMV18PSh0aGlzW2NdJmYpPDxhO2RbYy1lXT10aGlzW2NdPj5ifWlmKGI+MCl7ZFt0aGlzLnQtZS0xXXw9KHRoaXMucyZmKTw8YX1kLnQ9dGhpcy50LWU7ZC5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGQsZil7dmFyIGU9MCxnPTAsYj1NYXRoLm1pbihkLnQsdGhpcy50KTt3aGlsZShlPGIpe2crPXRoaXNbZV0tZFtlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWlmKGQudDx0aGlzLnQpe2ctPWQuczt3aGlsZShlPHRoaXMudCl7Zys9dGhpc1tlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWcrPXRoaXMuc31lbHNle2crPXRoaXMuczt3aGlsZShlPGQudCl7Zy09ZFtlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWctPWQuc31mLnM9KGc8MCk/LTE6MDtpZihnPC0xKXtmW2UrK109dGhpcy5EVitnfWVsc2V7aWYoZz4wKXtmW2UrK109Z319Zi50PWU7Zi5jbGFtcCgpfWZ1bmN0aW9uIGJucE11bHRpcGx5VG8oYyxlKXt2YXIgYj10aGlzLmFicygpLGY9Yy5hYnMoKTt2YXIgZD1iLnQ7ZS50PWQrZi50O3doaWxlKC0tZD49MCl7ZVtkXT0wfWZvcihkPTA7ZDxmLnQ7KytkKXtlW2QrYi50XT1iLmFtKDAsZltkXSxlLGQsMCxiLnQpfWUucz0wO2UuY2xhbXAoKTtpZih0aGlzLnMhPWMucyl7QmlnSW50ZWdlci5aRVJPLnN1YlRvKGUsZSl9fWZ1bmN0aW9uIGJucFNxdWFyZVRvKGQpe3ZhciBhPXRoaXMuYWJzKCk7dmFyIGI9ZC50PTIqYS50O3doaWxlKC0tYj49MCl7ZFtiXT0wfWZvcihiPTA7YjxhLnQtMTsrK2Ipe3ZhciBlPWEuYW0oYixhW2JdLGQsMipiLDAsMSk7aWYoKGRbYithLnRdKz1hLmFtKGIrMSwyKmFbYl0sZCwyKmIrMSxlLGEudC1iLTEpKT49YS5EVil7ZFtiK2EudF0tPWEuRFY7ZFtiK2EudCsxXT0xfX1pZihkLnQ+MCl7ZFtkLnQtMV0rPWEuYW0oYixhW2JdLGQsMipiLDAsMSl9ZC5zPTA7ZC5jbGFtcCgpfWZ1bmN0aW9uIGJucERpdlJlbVRvKG4saCxnKXt2YXIgdz1uLmFicygpO2lmKHcudDw9MCl7cmV0dXJufXZhciBrPXRoaXMuYWJzKCk7aWYoay50PHcudCl7aWYoaCE9bnVsbCl7aC5mcm9tSW50KDApfWlmKGchPW51bGwpe3RoaXMuY29weVRvKGcpfXJldHVybn1pZihnPT1udWxsKXtnPW5iaSgpfXZhciBkPW5iaSgpLGE9dGhpcy5zLGw9bi5zO3ZhciB2PXRoaXMuREItbmJpdHMod1t3LnQtMV0pO2lmKHY+MCl7dy5sU2hpZnRUbyh2LGQpO2subFNoaWZ0VG8odixnKX1lbHNle3cuY29weVRvKGQpO2suY29weVRvKGcpfXZhciBwPWQudDt2YXIgYj1kW3AtMV07aWYoYj09MCl7cmV0dXJufXZhciBvPWIqKDE8PHRoaXMuRjEpKygocD4xKT9kW3AtMl0+PnRoaXMuRjI6MCk7dmFyIEE9dGhpcy5GVi9vLHo9KDE8PHRoaXMuRjEpL28seD0xPDx0aGlzLkYyO3ZhciB1PWcudCxzPXUtcCxmPShoPT1udWxsKT9uYmkoKTpoO2QuZGxTaGlmdFRvKHMsZik7aWYoZy5jb21wYXJlVG8oZik+PTApe2dbZy50KytdPTE7Zy5zdWJUbyhmLGcpfUJpZ0ludGVnZXIuT05FLmRsU2hpZnRUbyhwLGYpO2Yuc3ViVG8oZCxkKTt3aGlsZShkLnQ8cCl7ZFtkLnQrK109MH13aGlsZSgtLXM+PTApe3ZhciBjPShnWy0tdV09PWIpP3RoaXMuRE06TWF0aC5mbG9vcihnW3VdKkErKGdbdS0xXSt4KSp6KTtpZigoZ1t1XSs9ZC5hbSgwLGMsZyxzLDAscCkpPGMpe2QuZGxTaGlmdFRvKHMsZik7Zy5zdWJUbyhmLGcpO3doaWxlKGdbdV08LS1jKXtnLnN1YlRvKGYsZyl9fX1pZihoIT1udWxsKXtnLmRyU2hpZnRUbyhwLGgpO2lmKGEhPWwpe0JpZ0ludGVnZXIuWkVSTy5zdWJUbyhoLGgpfX1nLnQ9cDtnLmNsYW1wKCk7aWYodj4wKXtnLnJTaGlmdFRvKHYsZyl9aWYoYTwwKXtCaWdJbnRlZ2VyLlpFUk8uc3ViVG8oZyxnKX19ZnVuY3Rpb24gYm5Nb2QoYil7dmFyIGM9bmJpKCk7dGhpcy5hYnMoKS5kaXZSZW1UbyhiLG51bGwsYyk7aWYodGhpcy5zPDAmJmMuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTyk+MCl7Yi5zdWJUbyhjLGMpfXJldHVybiBjfWZ1bmN0aW9uIENsYXNzaWMoYSl7dGhpcy5tPWF9ZnVuY3Rpb24gY0NvbnZlcnQoYSl7aWYoYS5zPDB8fGEuY29tcGFyZVRvKHRoaXMubSk+PTApe3JldHVybiBhLm1vZCh0aGlzLm0pfWVsc2V7cmV0dXJuIGF9fWZ1bmN0aW9uIGNSZXZlcnQoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gY1JlZHVjZShhKXthLmRpdlJlbVRvKHRoaXMubSxudWxsLGEpfWZ1bmN0aW9uIGNNdWxUbyhhLGMsYil7YS5tdWx0aXBseVRvKGMsYik7dGhpcy5yZWR1Y2UoYil9ZnVuY3Rpb24gY1NxclRvKGEsYil7YS5zcXVhcmVUbyhiKTt0aGlzLnJlZHVjZShiKX1DbGFzc2ljLnByb3RvdHlwZS5jb252ZXJ0PWNDb252ZXJ0O0NsYXNzaWMucHJvdG90eXBlLnJldmVydD1jUmV2ZXJ0O0NsYXNzaWMucHJvdG90eXBlLnJlZHVjZT1jUmVkdWNlO0NsYXNzaWMucHJvdG90eXBlLm11bFRvPWNNdWxUbztDbGFzc2ljLnByb3RvdHlwZS5zcXJUbz1jU3FyVG87ZnVuY3Rpb24gYm5wSW52RGlnaXQoKXtpZih0aGlzLnQ8MSl7cmV0dXJuIDB9dmFyIGE9dGhpc1swXTtpZigoYSYxKT09MCl7cmV0dXJuIDB9dmFyIGI9YSYzO2I9KGIqKDItKGEmMTUpKmIpKSYxNTtiPShiKigyLShhJjI1NSkqYikpJjI1NTtiPShiKigyLSgoKGEmNjU1MzUpKmIpJjY1NTM1KSkpJjY1NTM1O2I9KGIqKDItYSpiJXRoaXMuRFYpKSV0aGlzLkRWO3JldHVybihiPjApP3RoaXMuRFYtYjotYn1mdW5jdGlvbiBNb250Z29tZXJ5KGEpe3RoaXMubT1hO3RoaXMubXA9YS5pbnZEaWdpdCgpO3RoaXMubXBsPXRoaXMubXAmMzI3Njc7dGhpcy5tcGg9dGhpcy5tcD4+MTU7dGhpcy51bT0oMTw8KGEuREItMTUpKS0xO3RoaXMubXQyPTIqYS50fWZ1bmN0aW9uIG1vbnRDb252ZXJ0KGEpe3ZhciBiPW5iaSgpO2EuYWJzKCkuZGxTaGlmdFRvKHRoaXMubS50LGIpO2IuZGl2UmVtVG8odGhpcy5tLG51bGwsYik7aWYoYS5zPDAmJmIuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTyk+MCl7dGhpcy5tLnN1YlRvKGIsYil9cmV0dXJuIGJ9ZnVuY3Rpb24gbW9udFJldmVydChhKXt2YXIgYj1uYmkoKTthLmNvcHlUbyhiKTt0aGlzLnJlZHVjZShiKTtyZXR1cm4gYn1mdW5jdGlvbiBtb250UmVkdWNlKGEpe3doaWxlKGEudDw9dGhpcy5tdDIpe2FbYS50KytdPTB9Zm9yKHZhciBjPTA7Yzx0aGlzLm0udDsrK2Mpe3ZhciBiPWFbY10mMzI3Njc7dmFyIGQ9KGIqdGhpcy5tcGwrKCgoYip0aGlzLm1waCsoYVtjXT4+MTUpKnRoaXMubXBsKSZ0aGlzLnVtKTw8MTUpKSZhLkRNO2I9Yyt0aGlzLm0udDthW2JdKz10aGlzLm0uYW0oMCxkLGEsYywwLHRoaXMubS50KTt3aGlsZShhW2JdPj1hLkRWKXthW2JdLT1hLkRWO2FbKytiXSsrfX1hLmNsYW1wKCk7YS5kclNoaWZ0VG8odGhpcy5tLnQsYSk7aWYoYS5jb21wYXJlVG8odGhpcy5tKT49MCl7YS5zdWJUbyh0aGlzLm0sYSl9fWZ1bmN0aW9uIG1vbnRTcXJUbyhhLGIpe2Euc3F1YXJlVG8oYik7dGhpcy5yZWR1Y2UoYil9ZnVuY3Rpb24gbW9udE11bFRvKGEsYyxiKXthLm11bHRpcGx5VG8oYyxiKTt0aGlzLnJlZHVjZShiKX1Nb250Z29tZXJ5LnByb3RvdHlwZS5jb252ZXJ0PW1vbnRDb252ZXJ0O01vbnRnb21lcnkucHJvdG90eXBlLnJldmVydD1tb250UmV2ZXJ0O01vbnRnb21lcnkucHJvdG90eXBlLnJlZHVjZT1tb250UmVkdWNlO01vbnRnb21lcnkucHJvdG90eXBlLm11bFRvPW1vbnRNdWxUbztNb250Z29tZXJ5LnByb3RvdHlwZS5zcXJUbz1tb250U3FyVG87ZnVuY3Rpb24gYm5wSXNFdmVuKCl7cmV0dXJuKCh0aGlzLnQ+MCk/KHRoaXNbMF0mMSk6dGhpcy5zKT09MH1mdW5jdGlvbiBibnBFeHAoaCxqKXtpZihoPjQyOTQ5NjcyOTV8fGg8MSl7cmV0dXJuIEJpZ0ludGVnZXIuT05FfXZhciBmPW5iaSgpLGE9bmJpKCksZD1qLmNvbnZlcnQodGhpcyksYz1uYml0cyhoKS0xO2QuY29weVRvKGYpO3doaWxlKC0tYz49MCl7ai5zcXJUbyhmLGEpO2lmKChoJigxPDxjKSk+MCl7ai5tdWxUbyhhLGQsZil9ZWxzZXt2YXIgYj1mO2Y9YTthPWJ9fXJldHVybiBqLnJldmVydChmKX1mdW5jdGlvbiBibk1vZFBvd0ludChiLGEpe3ZhciBjO2lmKGI8MjU2fHxhLmlzRXZlbigpKXtjPW5ldyBDbGFzc2ljKGEpfWVsc2V7Yz1uZXcgTW9udGdvbWVyeShhKX1yZXR1cm4gdGhpcy5leHAoYixjKX1CaWdJbnRlZ2VyLnByb3RvdHlwZS5jb3B5VG89Ym5wQ29weVRvO0JpZ0ludGVnZXIucHJvdG90eXBlLmZyb21JbnQ9Ym5wRnJvbUludDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tU3RyaW5nPWJucEZyb21TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUuY2xhbXA9Ym5wQ2xhbXA7QmlnSW50ZWdlci5wcm90b3R5cGUuZGxTaGlmdFRvPWJucERMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5kclNoaWZ0VG89Ym5wRFJTaGlmdFRvO0JpZ0ludGVnZXIucHJvdG90eXBlLmxTaGlmdFRvPWJucExTaGlmdFRvO0JpZ0ludGVnZXIucHJvdG90eXBlLnJTaGlmdFRvPWJucFJTaGlmdFRvO0JpZ0ludGVnZXIucHJvdG90eXBlLnN1YlRvPWJucFN1YlRvO0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VG89Ym5wTXVsdGlwbHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmVUbz1ibnBTcXVhcmVUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZSZW1Ubz1ibnBEaXZSZW1UbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnZEaWdpdD1ibnBJbnZEaWdpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW49Ym5wSXNFdmVuO0JpZ0ludGVnZXIucHJvdG90eXBlLmV4cD1ibnBFeHA7QmlnSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmc9Ym5Ub1N0cmluZztCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGU9Ym5OZWdhdGU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWJzPWJuQWJzO0JpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbz1ibkNvbXBhcmVUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGg9Ym5CaXRMZW5ndGg7QmlnSW50ZWdlci5wcm90b3R5cGUubW9kPWJuTW9kO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvd0ludD1ibk1vZFBvd0ludDtCaWdJbnRlZ2VyLlpFUk89bmJ2KDApO0JpZ0ludGVnZXIuT05FPW5idigxKTtcbi8qISAoYykgVG9tIFd1IHwgaHR0cDovL3d3dy1jcy1zdHVkZW50cy5zdGFuZm9yZC5lZHUvfnRqdy9qc2JuL1xuICovXG5mdW5jdGlvbiBibkNsb25lKCl7dmFyIGE9bmJpKCk7dGhpcy5jb3B5VG8oYSk7cmV0dXJuIGF9ZnVuY3Rpb24gYm5JbnRWYWx1ZSgpe2lmKHRoaXMuczwwKXtpZih0aGlzLnQ9PTEpe3JldHVybiB0aGlzWzBdLXRoaXMuRFZ9ZWxzZXtpZih0aGlzLnQ9PTApe3JldHVybiAtMX19fWVsc2V7aWYodGhpcy50PT0xKXtyZXR1cm4gdGhpc1swXX1lbHNle2lmKHRoaXMudD09MCl7cmV0dXJuIDB9fX1yZXR1cm4oKHRoaXNbMV0mKCgxPDwoMzItdGhpcy5EQikpLTEpKTw8dGhpcy5EQil8dGhpc1swXX1mdW5jdGlvbiBibkJ5dGVWYWx1ZSgpe3JldHVybih0aGlzLnQ9PTApP3RoaXMuczoodGhpc1swXTw8MjQpPj4yNH1mdW5jdGlvbiBiblNob3J0VmFsdWUoKXtyZXR1cm4odGhpcy50PT0wKT90aGlzLnM6KHRoaXNbMF08PDE2KT4+MTZ9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKGEpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2coYSkpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApe3JldHVybiAtMX1lbHNle2lmKHRoaXMudDw9MHx8KHRoaXMudD09MSYmdGhpc1swXTw9MCkpe3JldHVybiAwfWVsc2V7cmV0dXJuIDF9fX1mdW5jdGlvbiBibnBUb1JhZGl4KGMpe2lmKGM9PW51bGwpe2M9MTB9aWYodGhpcy5zaWdudW0oKT09MHx8YzwyfHxjPjM2KXtyZXR1cm5cIjBcIn12YXIgZj10aGlzLmNodW5rU2l6ZShjKTt2YXIgZT1NYXRoLnBvdyhjLGYpO3ZhciBpPW5idihlKSxqPW5iaSgpLGg9bmJpKCksZz1cIlwiO3RoaXMuZGl2UmVtVG8oaSxqLGgpO3doaWxlKGouc2lnbnVtKCk+MCl7Zz0oZStoLmludFZhbHVlKCkpLnRvU3RyaW5nKGMpLnN1YnN0cigxKStnO2ouZGl2UmVtVG8oaSxqLGgpfXJldHVybiBoLmludFZhbHVlKCkudG9TdHJpbmcoYykrZ31mdW5jdGlvbiBibnBGcm9tUmFkaXgobSxoKXt0aGlzLmZyb21JbnQoMCk7aWYoaD09bnVsbCl7aD0xMH12YXIgZj10aGlzLmNodW5rU2l6ZShoKTt2YXIgZz1NYXRoLnBvdyhoLGYpLGU9ZmFsc2UsYT0wLGw9MDtmb3IodmFyIGM9MDtjPG0ubGVuZ3RoOysrYyl7dmFyIGs9aW50QXQobSxjKTtpZihrPDApe2lmKG0uY2hhckF0KGMpPT1cIi1cIiYmdGhpcy5zaWdudW0oKT09MCl7ZT10cnVlfWNvbnRpbnVlfWw9aCpsK2s7aWYoKythPj1mKXt0aGlzLmRNdWx0aXBseShnKTt0aGlzLmRBZGRPZmZzZXQobCwwKTthPTA7bD0wfX1pZihhPjApe3RoaXMuZE11bHRpcGx5KE1hdGgucG93KGgsYSkpO3RoaXMuZEFkZE9mZnNldChsLDApfWlmKGUpe0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHRoaXMpfX1mdW5jdGlvbiBibnBGcm9tTnVtYmVyKGYsZSxoKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl7aWYoZjwyKXt0aGlzLmZyb21JbnQoMSl9ZWxzZXt0aGlzLmZyb21OdW1iZXIoZixoKTtpZighdGhpcy50ZXN0Qml0KGYtMSkpe3RoaXMuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChmLTEpLG9wX29yLHRoaXMpfWlmKHRoaXMuaXNFdmVuKCkpe3RoaXMuZEFkZE9mZnNldCgxLDApfXdoaWxlKCF0aGlzLmlzUHJvYmFibGVQcmltZShlKSl7dGhpcy5kQWRkT2Zmc2V0KDIsMCk7aWYodGhpcy5iaXRMZW5ndGgoKT5mKXt0aGlzLnN1YlRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChmLTEpLHRoaXMpfX19fWVsc2V7dmFyIGQ9bmV3IEFycmF5KCksZz1mJjc7ZC5sZW5ndGg9KGY+PjMpKzE7ZS5uZXh0Qnl0ZXMoZCk7aWYoZz4wKXtkWzBdJj0oKDE8PGcpLTEpfWVsc2V7ZFswXT0wfXRoaXMuZnJvbVN0cmluZyhkLDI1Nil9fWZ1bmN0aW9uIGJuVG9CeXRlQXJyYXkoKXt2YXIgYj10aGlzLnQsYz1uZXcgQXJyYXkoKTtjWzBdPXRoaXMuczt2YXIgZT10aGlzLkRCLShiKnRoaXMuREIpJTgsZixhPTA7aWYoYi0tPjApe2lmKGU8dGhpcy5EQiYmKGY9dGhpc1tiXT4+ZSkhPSh0aGlzLnMmdGhpcy5ETSk+PmUpe2NbYSsrXT1mfCh0aGlzLnM8PCh0aGlzLkRCLWUpKX13aGlsZShiPj0wKXtpZihlPDgpe2Y9KHRoaXNbYl0mKCgxPDxlKS0xKSk8PCg4LWUpO2Z8PXRoaXNbLS1iXT4+KGUrPXRoaXMuREItOCl9ZWxzZXtmPSh0aGlzW2JdPj4oZS09OCkpJjI1NTtpZihlPD0wKXtlKz10aGlzLkRCOy0tYn19aWYoKGYmMTI4KSE9MCl7Znw9LTI1Nn1pZihhPT0wJiYodGhpcy5zJjEyOCkhPShmJjEyOCkpeysrYX1pZihhPjB8fGYhPXRoaXMucyl7Y1thKytdPWZ9fX1yZXR1cm4gY31mdW5jdGlvbiBibkVxdWFscyhiKXtyZXR1cm4odGhpcy5jb21wYXJlVG8oYik9PTApfWZ1bmN0aW9uIGJuTWluKGIpe3JldHVybih0aGlzLmNvbXBhcmVUbyhiKTwwKT90aGlzOmJ9ZnVuY3Rpb24gYm5NYXgoYil7cmV0dXJuKHRoaXMuY29tcGFyZVRvKGIpPjApP3RoaXM6Yn1mdW5jdGlvbiBibnBCaXR3aXNlVG8oYyxoLGUpe3ZhciBkLGcsYj1NYXRoLm1pbihjLnQsdGhpcy50KTtmb3IoZD0wO2Q8YjsrK2Qpe2VbZF09aCh0aGlzW2RdLGNbZF0pfWlmKGMudDx0aGlzLnQpe2c9Yy5zJnRoaXMuRE07Zm9yKGQ9YjtkPHRoaXMudDsrK2Qpe2VbZF09aCh0aGlzW2RdLGcpfWUudD10aGlzLnR9ZWxzZXtnPXRoaXMucyZ0aGlzLkRNO2ZvcihkPWI7ZDxjLnQ7KytkKXtlW2RdPWgoZyxjW2RdKX1lLnQ9Yy50fWUucz1oKHRoaXMucyxjLnMpO2UuY2xhbXAoKX1mdW5jdGlvbiBvcF9hbmQoYSxiKXtyZXR1cm4gYSZifWZ1bmN0aW9uIGJuQW5kKGIpe3ZhciBjPW5iaSgpO3RoaXMuYml0d2lzZVRvKGIsb3BfYW5kLGMpO3JldHVybiBjfWZ1bmN0aW9uIG9wX29yKGEsYil7cmV0dXJuIGF8Yn1mdW5jdGlvbiBibk9yKGIpe3ZhciBjPW5iaSgpO3RoaXMuYml0d2lzZVRvKGIsb3Bfb3IsYyk7cmV0dXJuIGN9ZnVuY3Rpb24gb3BfeG9yKGEsYil7cmV0dXJuIGFeYn1mdW5jdGlvbiBiblhvcihiKXt2YXIgYz1uYmkoKTt0aGlzLmJpdHdpc2VUbyhiLG9wX3hvcixjKTtyZXR1cm4gY31mdW5jdGlvbiBvcF9hbmRub3QoYSxiKXtyZXR1cm4gYSZ+Yn1mdW5jdGlvbiBibkFuZE5vdChiKXt2YXIgYz1uYmkoKTt0aGlzLmJpdHdpc2VUbyhiLG9wX2FuZG5vdCxjKTtyZXR1cm4gY31mdW5jdGlvbiBibk5vdCgpe3ZhciBiPW5iaSgpO2Zvcih2YXIgYT0wO2E8dGhpcy50OysrYSl7YlthXT10aGlzLkRNJn50aGlzW2FdfWIudD10aGlzLnQ7Yi5zPX50aGlzLnM7cmV0dXJuIGJ9ZnVuY3Rpb24gYm5TaGlmdExlZnQoYil7dmFyIGE9bmJpKCk7aWYoYjwwKXt0aGlzLnJTaGlmdFRvKC1iLGEpfWVsc2V7dGhpcy5sU2hpZnRUbyhiLGEpfXJldHVybiBhfWZ1bmN0aW9uIGJuU2hpZnRSaWdodChiKXt2YXIgYT1uYmkoKTtpZihiPDApe3RoaXMubFNoaWZ0VG8oLWIsYSl9ZWxzZXt0aGlzLnJTaGlmdFRvKGIsYSl9cmV0dXJuIGF9ZnVuY3Rpb24gbGJpdChhKXtpZihhPT0wKXtyZXR1cm4gLTF9dmFyIGI9MDtpZigoYSY2NTUzNSk9PTApe2E+Pj0xNjtiKz0xNn1pZigoYSYyNTUpPT0wKXthPj49ODtiKz04fWlmKChhJjE1KT09MCl7YT4+PTQ7Yis9NH1pZigoYSYzKT09MCl7YT4+PTI7Yis9Mn1pZigoYSYxKT09MCl7KytifXJldHVybiBifWZ1bmN0aW9uIGJuR2V0TG93ZXN0U2V0Qml0KCl7Zm9yKHZhciBhPTA7YTx0aGlzLnQ7KythKXtpZih0aGlzW2FdIT0wKXtyZXR1cm4gYSp0aGlzLkRCK2xiaXQodGhpc1thXSl9fWlmKHRoaXMuczwwKXtyZXR1cm4gdGhpcy50KnRoaXMuREJ9cmV0dXJuIC0xfWZ1bmN0aW9uIGNiaXQoYSl7dmFyIGI9MDt3aGlsZShhIT0wKXthJj1hLTE7KytifXJldHVybiBifWZ1bmN0aW9uIGJuQml0Q291bnQoKXt2YXIgYz0wLGE9dGhpcy5zJnRoaXMuRE07Zm9yKHZhciBiPTA7Yjx0aGlzLnQ7KytiKXtjKz1jYml0KHRoaXNbYl1eYSl9cmV0dXJuIGN9ZnVuY3Rpb24gYm5UZXN0Qml0KGIpe3ZhciBhPU1hdGguZmxvb3IoYi90aGlzLkRCKTtpZihhPj10aGlzLnQpe3JldHVybih0aGlzLnMhPTApfXJldHVybigodGhpc1thXSYoMTw8KGIldGhpcy5EQikpKSE9MCl9ZnVuY3Rpb24gYm5wQ2hhbmdlQml0KGMsYil7dmFyIGE9QmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGMpO3RoaXMuYml0d2lzZVRvKGEsYixhKTtyZXR1cm4gYX1mdW5jdGlvbiBiblNldEJpdChhKXtyZXR1cm4gdGhpcy5jaGFuZ2VCaXQoYSxvcF9vcil9ZnVuY3Rpb24gYm5DbGVhckJpdChhKXtyZXR1cm4gdGhpcy5jaGFuZ2VCaXQoYSxvcF9hbmRub3QpfWZ1bmN0aW9uIGJuRmxpcEJpdChhKXtyZXR1cm4gdGhpcy5jaGFuZ2VCaXQoYSxvcF94b3IpfWZ1bmN0aW9uIGJucEFkZFRvKGQsZil7dmFyIGU9MCxnPTAsYj1NYXRoLm1pbihkLnQsdGhpcy50KTt3aGlsZShlPGIpe2crPXRoaXNbZV0rZFtlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWlmKGQudDx0aGlzLnQpe2crPWQuczt3aGlsZShlPHRoaXMudCl7Zys9dGhpc1tlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWcrPXRoaXMuc31lbHNle2crPXRoaXMuczt3aGlsZShlPGQudCl7Zys9ZFtlXTtmW2UrK109ZyZ0aGlzLkRNO2c+Pj10aGlzLkRCfWcrPWQuc31mLnM9KGc8MCk/LTE6MDtpZihnPjApe2ZbZSsrXT1nfWVsc2V7aWYoZzwtMSl7ZltlKytdPXRoaXMuRFYrZ319Zi50PWU7Zi5jbGFtcCgpfWZ1bmN0aW9uIGJuQWRkKGIpe3ZhciBjPW5iaSgpO3RoaXMuYWRkVG8oYixjKTtyZXR1cm4gY31mdW5jdGlvbiBiblN1YnRyYWN0KGIpe3ZhciBjPW5iaSgpO3RoaXMuc3ViVG8oYixjKTtyZXR1cm4gY31mdW5jdGlvbiBibk11bHRpcGx5KGIpe3ZhciBjPW5iaSgpO3RoaXMubXVsdGlwbHlUbyhiLGMpO3JldHVybiBjfWZ1bmN0aW9uIGJuU3F1YXJlKCl7dmFyIGE9bmJpKCk7dGhpcy5zcXVhcmVUbyhhKTtyZXR1cm4gYX1mdW5jdGlvbiBibkRpdmlkZShiKXt2YXIgYz1uYmkoKTt0aGlzLmRpdlJlbVRvKGIsYyxudWxsKTtyZXR1cm4gY31mdW5jdGlvbiBiblJlbWFpbmRlcihiKXt2YXIgYz1uYmkoKTt0aGlzLmRpdlJlbVRvKGIsbnVsbCxjKTtyZXR1cm4gY31mdW5jdGlvbiBibkRpdmlkZUFuZFJlbWFpbmRlcihiKXt2YXIgZD1uYmkoKSxjPW5iaSgpO3RoaXMuZGl2UmVtVG8oYixkLGMpO3JldHVybiBuZXcgQXJyYXkoZCxjKX1mdW5jdGlvbiBibnBETXVsdGlwbHkoYSl7dGhpc1t0aGlzLnRdPXRoaXMuYW0oMCxhLTEsdGhpcywwLDAsdGhpcy50KTsrK3RoaXMudDt0aGlzLmNsYW1wKCl9ZnVuY3Rpb24gYm5wREFkZE9mZnNldChiLGEpe2lmKGI9PTApe3JldHVybn13aGlsZSh0aGlzLnQ8PWEpe3RoaXNbdGhpcy50KytdPTB9dGhpc1thXSs9Yjt3aGlsZSh0aGlzW2FdPj10aGlzLkRWKXt0aGlzW2FdLT10aGlzLkRWO2lmKCsrYT49dGhpcy50KXt0aGlzW3RoaXMudCsrXT0wfSsrdGhpc1thXX19ZnVuY3Rpb24gTnVsbEV4cCgpe31mdW5jdGlvbiBuTm9wKGEpe3JldHVybiBhfWZ1bmN0aW9uIG5NdWxUbyhhLGMsYil7YS5tdWx0aXBseVRvKGMsYil9ZnVuY3Rpb24gblNxclRvKGEsYil7YS5zcXVhcmVUbyhiKX1OdWxsRXhwLnByb3RvdHlwZS5jb252ZXJ0PW5Ob3A7TnVsbEV4cC5wcm90b3R5cGUucmV2ZXJ0PW5Ob3A7TnVsbEV4cC5wcm90b3R5cGUubXVsVG89bk11bFRvO051bGxFeHAucHJvdG90eXBlLnNxclRvPW5TcXJUbztmdW5jdGlvbiBiblBvdyhhKXtyZXR1cm4gdGhpcy5leHAoYSxuZXcgTnVsbEV4cCgpKX1mdW5jdGlvbiBibnBNdWx0aXBseUxvd2VyVG8oYixmLGUpe3ZhciBkPU1hdGgubWluKHRoaXMudCtiLnQsZik7ZS5zPTA7ZS50PWQ7d2hpbGUoZD4wKXtlWy0tZF09MH12YXIgYztmb3IoYz1lLnQtdGhpcy50O2Q8YzsrK2Qpe2VbZCt0aGlzLnRdPXRoaXMuYW0oMCxiW2RdLGUsZCwwLHRoaXMudCl9Zm9yKGM9TWF0aC5taW4oYi50LGYpO2Q8YzsrK2Qpe3RoaXMuYW0oMCxiW2RdLGUsZCwwLGYtZCl9ZS5jbGFtcCgpfWZ1bmN0aW9uIGJucE11bHRpcGx5VXBwZXJUbyhiLGUsZCl7LS1lO3ZhciBjPWQudD10aGlzLnQrYi50LWU7ZC5zPTA7d2hpbGUoLS1jPj0wKXtkW2NdPTB9Zm9yKGM9TWF0aC5tYXgoZS10aGlzLnQsMCk7YzxiLnQ7KytjKXtkW3RoaXMudCtjLWVdPXRoaXMuYW0oZS1jLGJbY10sZCwwLDAsdGhpcy50K2MtZSl9ZC5jbGFtcCgpO2QuZHJTaGlmdFRvKDEsZCl9ZnVuY3Rpb24gQmFycmV0dChhKXt0aGlzLnIyPW5iaSgpO3RoaXMucTM9bmJpKCk7QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKDIqYS50LHRoaXMucjIpO3RoaXMubXU9dGhpcy5yMi5kaXZpZGUoYSk7dGhpcy5tPWF9ZnVuY3Rpb24gYmFycmV0dENvbnZlcnQoYSl7aWYoYS5zPDB8fGEudD4yKnRoaXMubS50KXtyZXR1cm4gYS5tb2QodGhpcy5tKX1lbHNle2lmKGEuY29tcGFyZVRvKHRoaXMubSk8MCl7cmV0dXJuIGF9ZWxzZXt2YXIgYj1uYmkoKTthLmNvcHlUbyhiKTt0aGlzLnJlZHVjZShiKTtyZXR1cm4gYn19fWZ1bmN0aW9uIGJhcnJldHRSZXZlcnQoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gYmFycmV0dFJlZHVjZShhKXthLmRyU2hpZnRUbyh0aGlzLm0udC0xLHRoaXMucjIpO2lmKGEudD50aGlzLm0udCsxKXthLnQ9dGhpcy5tLnQrMTthLmNsYW1wKCl9dGhpcy5tdS5tdWx0aXBseVVwcGVyVG8odGhpcy5yMix0aGlzLm0udCsxLHRoaXMucTMpO3RoaXMubS5tdWx0aXBseUxvd2VyVG8odGhpcy5xMyx0aGlzLm0udCsxLHRoaXMucjIpO3doaWxlKGEuY29tcGFyZVRvKHRoaXMucjIpPDApe2EuZEFkZE9mZnNldCgxLHRoaXMubS50KzEpfWEuc3ViVG8odGhpcy5yMixhKTt3aGlsZShhLmNvbXBhcmVUbyh0aGlzLm0pPj0wKXthLnN1YlRvKHRoaXMubSxhKX19ZnVuY3Rpb24gYmFycmV0dFNxclRvKGEsYil7YS5zcXVhcmVUbyhiKTt0aGlzLnJlZHVjZShiKX1mdW5jdGlvbiBiYXJyZXR0TXVsVG8oYSxjLGIpe2EubXVsdGlwbHlUbyhjLGIpO3RoaXMucmVkdWNlKGIpfUJhcnJldHQucHJvdG90eXBlLmNvbnZlcnQ9YmFycmV0dENvbnZlcnQ7QmFycmV0dC5wcm90b3R5cGUucmV2ZXJ0PWJhcnJldHRSZXZlcnQ7QmFycmV0dC5wcm90b3R5cGUucmVkdWNlPWJhcnJldHRSZWR1Y2U7QmFycmV0dC5wcm90b3R5cGUubXVsVG89YmFycmV0dE11bFRvO0JhcnJldHQucHJvdG90eXBlLnNxclRvPWJhcnJldHRTcXJUbztmdW5jdGlvbiBibk1vZFBvdyhxLGYpe3ZhciBvPXEuYml0TGVuZ3RoKCksaCxiPW5idigxKSx2O2lmKG88PTApe3JldHVybiBifWVsc2V7aWYobzwxOCl7aD0xfWVsc2V7aWYobzw0OCl7aD0zfWVsc2V7aWYobzwxNDQpe2g9NH1lbHNle2lmKG88NzY4KXtoPTV9ZWxzZXtoPTZ9fX19fWlmKG88OCl7dj1uZXcgQ2xhc3NpYyhmKX1lbHNle2lmKGYuaXNFdmVuKCkpe3Y9bmV3IEJhcnJldHQoZil9ZWxzZXt2PW5ldyBNb250Z29tZXJ5KGYpfX12YXIgcD1uZXcgQXJyYXkoKSxkPTMscz1oLTEsYT0oMTw8aCktMTtwWzFdPXYuY29udmVydCh0aGlzKTtpZihoPjEpe3ZhciBBPW5iaSgpO3Yuc3FyVG8ocFsxXSxBKTt3aGlsZShkPD1hKXtwW2RdPW5iaSgpO3YubXVsVG8oQSxwW2QtMl0scFtkXSk7ZCs9Mn19dmFyIGw9cS50LTEseCx1PXRydWUsYz1uYmkoKSx5O289bmJpdHMocVtsXSktMTt3aGlsZShsPj0wKXtpZihvPj1zKXt4PShxW2xdPj4oby1zKSkmYX1lbHNle3g9KHFbbF0mKCgxPDwobysxKSktMSkpPDwocy1vKTtpZihsPjApe3h8PXFbbC0xXT4+KHRoaXMuREIrby1zKX19ZD1oO3doaWxlKCh4JjEpPT0wKXt4Pj49MTstLWR9aWYoKG8tPWQpPDApe28rPXRoaXMuREI7LS1sfWlmKHUpe3BbeF0uY29weVRvKGIpO3U9ZmFsc2V9ZWxzZXt3aGlsZShkPjEpe3Yuc3FyVG8oYixjKTt2LnNxclRvKGMsYik7ZC09Mn1pZihkPjApe3Yuc3FyVG8oYixjKX1lbHNle3k9YjtiPWM7Yz15fXYubXVsVG8oYyxwW3hdLGIpfXdoaWxlKGw+PTAmJihxW2xdJigxPDxvKSk9PTApe3Yuc3FyVG8oYixjKTt5PWI7Yj1jO2M9eTtpZigtLW88MCl7bz10aGlzLkRCLTE7LS1sfX19cmV0dXJuIHYucmV2ZXJ0KGIpfWZ1bmN0aW9uIGJuR0NEKGMpe3ZhciBiPSh0aGlzLnM8MCk/dGhpcy5uZWdhdGUoKTp0aGlzLmNsb25lKCk7dmFyIGg9KGMuczwwKT9jLm5lZ2F0ZSgpOmMuY2xvbmUoKTtpZihiLmNvbXBhcmVUbyhoKTwwKXt2YXIgZT1iO2I9aDtoPWV9dmFyIGQ9Yi5nZXRMb3dlc3RTZXRCaXQoKSxmPWguZ2V0TG93ZXN0U2V0Qml0KCk7aWYoZjwwKXtyZXR1cm4gYn1pZihkPGYpe2Y9ZH1pZihmPjApe2IuclNoaWZ0VG8oZixiKTtoLnJTaGlmdFRvKGYsaCl9d2hpbGUoYi5zaWdudW0oKT4wKXtpZigoZD1iLmdldExvd2VzdFNldEJpdCgpKT4wKXtiLnJTaGlmdFRvKGQsYil9aWYoKGQ9aC5nZXRMb3dlc3RTZXRCaXQoKSk+MCl7aC5yU2hpZnRUbyhkLGgpfWlmKGIuY29tcGFyZVRvKGgpPj0wKXtiLnN1YlRvKGgsYik7Yi5yU2hpZnRUbygxLGIpfWVsc2V7aC5zdWJUbyhiLGgpO2guclNoaWZ0VG8oMSxoKX19aWYoZj4wKXtoLmxTaGlmdFRvKGYsaCl9cmV0dXJuIGh9ZnVuY3Rpb24gYm5wTW9kSW50KGUpe2lmKGU8PTApe3JldHVybiAwfXZhciBjPXRoaXMuRFYlZSxiPSh0aGlzLnM8MCk/ZS0xOjA7aWYodGhpcy50PjApe2lmKGM9PTApe2I9dGhpc1swXSVlfWVsc2V7Zm9yKHZhciBhPXRoaXMudC0xO2E+PTA7LS1hKXtiPShjKmIrdGhpc1thXSklZX19fXJldHVybiBifWZ1bmN0aW9uIGJuTW9kSW52ZXJzZShmKXt2YXIgaj1mLmlzRXZlbigpO2lmKCh0aGlzLmlzRXZlbigpJiZqKXx8Zi5zaWdudW0oKT09MCl7cmV0dXJuIEJpZ0ludGVnZXIuWkVST312YXIgaT1mLmNsb25lKCksaD10aGlzLmNsb25lKCk7dmFyIGc9bmJ2KDEpLGU9bmJ2KDApLGw9bmJ2KDApLGs9bmJ2KDEpO3doaWxlKGkuc2lnbnVtKCkhPTApe3doaWxlKGkuaXNFdmVuKCkpe2kuclNoaWZ0VG8oMSxpKTtpZihqKXtpZighZy5pc0V2ZW4oKXx8IWUuaXNFdmVuKCkpe2cuYWRkVG8odGhpcyxnKTtlLnN1YlRvKGYsZSl9Zy5yU2hpZnRUbygxLGcpfWVsc2V7aWYoIWUuaXNFdmVuKCkpe2Uuc3ViVG8oZixlKX19ZS5yU2hpZnRUbygxLGUpfXdoaWxlKGguaXNFdmVuKCkpe2guclNoaWZ0VG8oMSxoKTtpZihqKXtpZighbC5pc0V2ZW4oKXx8IWsuaXNFdmVuKCkpe2wuYWRkVG8odGhpcyxsKTtrLnN1YlRvKGYsayl9bC5yU2hpZnRUbygxLGwpfWVsc2V7aWYoIWsuaXNFdmVuKCkpe2suc3ViVG8oZixrKX19ay5yU2hpZnRUbygxLGspfWlmKGkuY29tcGFyZVRvKGgpPj0wKXtpLnN1YlRvKGgsaSk7aWYoail7Zy5zdWJUbyhsLGcpfWUuc3ViVG8oayxlKX1lbHNle2guc3ViVG8oaSxoKTtpZihqKXtsLnN1YlRvKGcsbCl9ay5zdWJUbyhlLGspfX1pZihoLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkhPTApe3JldHVybiBCaWdJbnRlZ2VyLlpFUk99aWYoay5jb21wYXJlVG8oZik+PTApe3JldHVybiBrLnN1YnRyYWN0KGYpfWlmKGsuc2lnbnVtKCk8MCl7ay5hZGRUbyhmLGspfWVsc2V7cmV0dXJuIGt9aWYoay5zaWdudW0oKTwwKXtyZXR1cm4gay5hZGQoZil9ZWxzZXtyZXR1cm4ga319dmFyIGxvd3ByaW1lcz1bMiwzLDUsNywxMSwxMywxNywxOSwyMywyOSwzMSwzNyw0MSw0Myw0Nyw1Myw1OSw2MSw2Nyw3MSw3Myw3OSw4Myw4OSw5NywxMDEsMTAzLDEwNywxMDksMTEzLDEyNywxMzEsMTM3LDEzOSwxNDksMTUxLDE1NywxNjMsMTY3LDE3MywxNzksMTgxLDE5MSwxOTMsMTk3LDE5OSwyMTEsMjIzLDIyNywyMjksMjMzLDIzOSwyNDEsMjUxLDI1NywyNjMsMjY5LDI3MSwyNzcsMjgxLDI4MywyOTMsMzA3LDMxMSwzMTMsMzE3LDMzMSwzMzcsMzQ3LDM0OSwzNTMsMzU5LDM2NywzNzMsMzc5LDM4MywzODksMzk3LDQwMSw0MDksNDE5LDQyMSw0MzEsNDMzLDQzOSw0NDMsNDQ5LDQ1Nyw0NjEsNDYzLDQ2Nyw0NzksNDg3LDQ5MSw0OTksNTAzLDUwOSw1MjEsNTIzLDU0MSw1NDcsNTU3LDU2Myw1NjksNTcxLDU3Nyw1ODcsNTkzLDU5OSw2MDEsNjA3LDYxMyw2MTcsNjE5LDYzMSw2NDEsNjQzLDY0Nyw2NTMsNjU5LDY2MSw2NzMsNjc3LDY4Myw2OTEsNzAxLDcwOSw3MTksNzI3LDczMyw3MzksNzQzLDc1MSw3NTcsNzYxLDc2OSw3NzMsNzg3LDc5Nyw4MDksODExLDgyMSw4MjMsODI3LDgyOSw4MzksODUzLDg1Nyw4NTksODYzLDg3Nyw4ODEsODgzLDg4Nyw5MDcsOTExLDkxOSw5MjksOTM3LDk0MSw5NDcsOTUzLDk2Nyw5NzEsOTc3LDk4Myw5OTEsOTk3XTt2YXIgbHBsaW09KDE8PDI2KS9sb3dwcmltZXNbbG93cHJpbWVzLmxlbmd0aC0xXTtmdW5jdGlvbiBibklzUHJvYmFibGVQcmltZShlKXt2YXIgZCxiPXRoaXMuYWJzKCk7aWYoYi50PT0xJiZiWzBdPD1sb3dwcmltZXNbbG93cHJpbWVzLmxlbmd0aC0xXSl7Zm9yKGQ9MDtkPGxvd3ByaW1lcy5sZW5ndGg7KytkKXtpZihiWzBdPT1sb3dwcmltZXNbZF0pe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9aWYoYi5pc0V2ZW4oKSl7cmV0dXJuIGZhbHNlfWQ9MTt3aGlsZShkPGxvd3ByaW1lcy5sZW5ndGgpe3ZhciBhPWxvd3ByaW1lc1tkXSxjPWQrMTt3aGlsZShjPGxvd3ByaW1lcy5sZW5ndGgmJmE8bHBsaW0pe2EqPWxvd3ByaW1lc1tjKytdfWE9Yi5tb2RJbnQoYSk7d2hpbGUoZDxjKXtpZihhJWxvd3ByaW1lc1tkKytdPT0wKXtyZXR1cm4gZmFsc2V9fX1yZXR1cm4gYi5taWxsZXJSYWJpbihlKX1mdW5jdGlvbiBibnBNaWxsZXJSYWJpbihmKXt2YXIgZz10aGlzLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTt2YXIgYz1nLmdldExvd2VzdFNldEJpdCgpO2lmKGM8PTApe3JldHVybiBmYWxzZX12YXIgaD1nLnNoaWZ0UmlnaHQoYyk7Zj0oZisxKT4+MTtpZihmPmxvd3ByaW1lcy5sZW5ndGgpe2Y9bG93cHJpbWVzLmxlbmd0aH12YXIgYj1uYmkoKTtmb3IodmFyIGU9MDtlPGY7KytlKXtiLmZyb21JbnQobG93cHJpbWVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsb3dwcmltZXMubGVuZ3RoKV0pO3ZhciBsPWIubW9kUG93KGgsdGhpcyk7aWYobC5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpIT0wJiZsLmNvbXBhcmVUbyhnKSE9MCl7dmFyIGQ9MTt3aGlsZShkKys8YyYmbC5jb21wYXJlVG8oZykhPTApe2w9bC5tb2RQb3dJbnQoMix0aGlzKTtpZihsLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSk9PTApe3JldHVybiBmYWxzZX19aWYobC5jb21wYXJlVG8oZykhPTApe3JldHVybiBmYWxzZX19fXJldHVybiB0cnVlfUJpZ0ludGVnZXIucHJvdG90eXBlLmNodW5rU2l6ZT1ibnBDaHVua1NpemU7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbU51bWJlcj1ibnBGcm9tTnVtYmVyO0JpZ0ludGVnZXIucHJvdG90eXBlLmJpdHdpc2VUbz1ibnBCaXR3aXNlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuY2hhbmdlQml0PWJucENoYW5nZUJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGRUbz1ibnBBZGRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5kTXVsdGlwbHk9Ym5wRE11bHRpcGx5O0JpZ0ludGVnZXIucHJvdG90eXBlLmRBZGRPZmZzZXQ9Ym5wREFkZE9mZnNldDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseUxvd2VyVG89Ym5wTXVsdGlwbHlMb3dlclRvO0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VXBwZXJUbz1ibnBNdWx0aXBseVVwcGVyVG87QmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW50PWJucE1vZEludDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5taWxsZXJSYWJpbj1ibnBNaWxsZXJSYWJpbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbG9uZT1ibkNsb25lO0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYnl0ZVZhbHVlPWJuQnl0ZVZhbHVlO0JpZ0ludGVnZXIucHJvdG90eXBlLnNob3J0VmFsdWU9Ym5TaG9ydFZhbHVlO0JpZ0ludGVnZXIucHJvdG90eXBlLnNpZ251bT1iblNpZ051bTtCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0J5dGVBcnJheT1iblRvQnl0ZUFycmF5O0JpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscz1ibkVxdWFscztCaWdJbnRlZ2VyLnByb3RvdHlwZS5taW49Ym5NaW47QmlnSW50ZWdlci5wcm90b3R5cGUubWF4PWJuTWF4O0JpZ0ludGVnZXIucHJvdG90eXBlLmFuZD1ibkFuZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5vcj1ibk9yO0JpZ0ludGVnZXIucHJvdG90eXBlLnhvcj1iblhvcjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmROb3Q9Ym5BbmROb3Q7QmlnSW50ZWdlci5wcm90b3R5cGUubm90PWJuTm90O0JpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdD1iblNoaWZ0TGVmdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0PWJuU2hpZnRSaWdodDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXRMb3dlc3RTZXRCaXQ9Ym5HZXRMb3dlc3RTZXRCaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuYml0Q291bnQ9Ym5CaXRDb3VudDtCaWdJbnRlZ2VyLnByb3RvdHlwZS50ZXN0Qml0PWJuVGVzdEJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zZXRCaXQ9Ym5TZXRCaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuY2xlYXJCaXQ9Ym5DbGVhckJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5mbGlwQml0PWJuRmxpcEJpdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQ9Ym5BZGQ7QmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q9Ym5TdWJ0cmFjdDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseT1ibk11bHRpcGx5O0JpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZT1ibkRpdmlkZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXI9Ym5SZW1haW5kZXI7QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlQW5kUmVtYWluZGVyPWJuRGl2aWRlQW5kUmVtYWluZGVyO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdz1ibk1vZFBvdztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnZlcnNlPWJuTW9kSW52ZXJzZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3c9Ym5Qb3c7QmlnSW50ZWdlci5wcm90b3R5cGUuZ2NkPWJuR0NEO0JpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZT1ibklzUHJvYmFibGVQcmltZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmU9Ym5TcXVhcmU7XG4vKiEgKGMpIFRvbSBXdSB8IGh0dHA6Ly93d3ctY3Mtc3R1ZGVudHMuc3RhbmZvcmQuZWR1L350ancvanNibi9cbiAqL1xuZnVuY3Rpb24gQXJjZm91cigpe3RoaXMuaT0wO3RoaXMuaj0wO3RoaXMuUz1uZXcgQXJyYXkoKX1mdW5jdGlvbiBBUkM0aW5pdChkKXt2YXIgYyxhLGI7Zm9yKGM9MDtjPDI1NjsrK2Mpe3RoaXMuU1tjXT1jfWE9MDtmb3IoYz0wO2M8MjU2OysrYyl7YT0oYSt0aGlzLlNbY10rZFtjJWQubGVuZ3RoXSkmMjU1O2I9dGhpcy5TW2NdO3RoaXMuU1tjXT10aGlzLlNbYV07dGhpcy5TW2FdPWJ9dGhpcy5pPTA7dGhpcy5qPTB9ZnVuY3Rpb24gQVJDNG5leHQoKXt2YXIgYTt0aGlzLmk9KHRoaXMuaSsxKSYyNTU7dGhpcy5qPSh0aGlzLmordGhpcy5TW3RoaXMuaV0pJjI1NTthPXRoaXMuU1t0aGlzLmldO3RoaXMuU1t0aGlzLmldPXRoaXMuU1t0aGlzLmpdO3RoaXMuU1t0aGlzLmpdPWE7cmV0dXJuIHRoaXMuU1soYSt0aGlzLlNbdGhpcy5pXSkmMjU1XX1BcmNmb3VyLnByb3RvdHlwZS5pbml0PUFSQzRpbml0O0FyY2ZvdXIucHJvdG90eXBlLm5leHQ9QVJDNG5leHQ7ZnVuY3Rpb24gcHJuZ19uZXdzdGF0ZSgpe3JldHVybiBuZXcgQXJjZm91cigpfXZhciBybmdfcHNpemU9MjU2O1xuLyohIChjKSBUb20gV3UgfCBodHRwOi8vd3d3LWNzLXN0dWRlbnRzLnN0YW5mb3JkLmVkdS9+dGp3L2pzYm4vXG4gKi9cbnZhciBybmdfc3RhdGU7dmFyIHJuZ19wb29sO3ZhciBybmdfcHB0cjtmdW5jdGlvbiBybmdfc2VlZF9pbnQoYSl7cm5nX3Bvb2xbcm5nX3BwdHIrK11ePWEmMjU1O3JuZ19wb29sW3JuZ19wcHRyKytdXj0oYT4+OCkmMjU1O3JuZ19wb29sW3JuZ19wcHRyKytdXj0oYT4+MTYpJjI1NTtybmdfcG9vbFtybmdfcHB0cisrXV49KGE+PjI0KSYyNTU7aWYocm5nX3BwdHI+PXJuZ19wc2l6ZSl7cm5nX3BwdHItPXJuZ19wc2l6ZX19ZnVuY3Rpb24gcm5nX3NlZWRfdGltZSgpe3JuZ19zZWVkX2ludChuZXcgRGF0ZSgpLmdldFRpbWUoKSl9aWYocm5nX3Bvb2w9PW51bGwpe3JuZ19wb29sPW5ldyBBcnJheSgpO3JuZ19wcHRyPTA7dmFyIHQ7aWYod2luZG93IT09dW5kZWZpbmVkJiYod2luZG93LmNyeXB0byE9PXVuZGVmaW5lZHx8d2luZG93Lm1zQ3J5cHRvIT09dW5kZWZpbmVkKSl7dmFyIGNyeXB0bz13aW5kb3cuY3J5cHRvfHx3aW5kb3cubXNDcnlwdG87aWYoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7dmFyIHVhPW5ldyBVaW50OEFycmF5KDMyKTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHVhKTtmb3IodD0wO3Q8MzI7Kyt0KXtybmdfcG9vbFtybmdfcHB0cisrXT11YVt0XX19ZWxzZXtpZihuYXZpZ2F0b3IuYXBwTmFtZT09XCJOZXRzY2FwZVwiJiZuYXZpZ2F0b3IuYXBwVmVyc2lvbjxcIjVcIil7dmFyIHo9d2luZG93LmNyeXB0by5yYW5kb20oMzIpO2Zvcih0PTA7dDx6Lmxlbmd0aDsrK3Qpe3JuZ19wb29sW3JuZ19wcHRyKytdPXouY2hhckNvZGVBdCh0KSYyNTV9fX19d2hpbGUocm5nX3BwdHI8cm5nX3BzaXplKXt0PU1hdGguZmxvb3IoNjU1MzYqTWF0aC5yYW5kb20oKSk7cm5nX3Bvb2xbcm5nX3BwdHIrK109dD4+Pjg7cm5nX3Bvb2xbcm5nX3BwdHIrK109dCYyNTV9cm5nX3BwdHI9MDtybmdfc2VlZF90aW1lKCl9ZnVuY3Rpb24gcm5nX2dldF9ieXRlKCl7aWYocm5nX3N0YXRlPT1udWxsKXtybmdfc2VlZF90aW1lKCk7cm5nX3N0YXRlPXBybmdfbmV3c3RhdGUoKTtybmdfc3RhdGUuaW5pdChybmdfcG9vbCk7Zm9yKHJuZ19wcHRyPTA7cm5nX3BwdHI8cm5nX3Bvb2wubGVuZ3RoOysrcm5nX3BwdHIpe3JuZ19wb29sW3JuZ19wcHRyXT0wfXJuZ19wcHRyPTB9cmV0dXJuIHJuZ19zdGF0ZS5uZXh0KCl9ZnVuY3Rpb24gcm5nX2dldF9ieXRlcyhiKXt2YXIgYTtmb3IoYT0wO2E8Yi5sZW5ndGg7KythKXtiW2FdPXJuZ19nZXRfYnl0ZSgpfX1mdW5jdGlvbiBTZWN1cmVSYW5kb20oKXt9U2VjdXJlUmFuZG9tLnByb3RvdHlwZS5uZXh0Qnl0ZXM9cm5nX2dldF9ieXRlcztcbi8qISAoYykgVG9tIFd1IHwgaHR0cDovL3d3dy1jcy1zdHVkZW50cy5zdGFuZm9yZC5lZHUvfnRqdy9qc2JuL1xuICovXG5mdW5jdGlvbiBwYXJzZUJpZ0ludChiLGEpe3JldHVybiBuZXcgQmlnSW50ZWdlcihiLGEpfWZ1bmN0aW9uIGxpbmVicmsoYyxkKXt2YXIgYT1cIlwiO3ZhciBiPTA7d2hpbGUoYitkPGMubGVuZ3RoKXthKz1jLnN1YnN0cmluZyhiLGIrZCkrXCJcXG5cIjtiKz1kfXJldHVybiBhK2Muc3Vic3RyaW5nKGIsYy5sZW5ndGgpfWZ1bmN0aW9uIGJ5dGUySGV4KGEpe2lmKGE8MTYpe3JldHVyblwiMFwiK2EudG9TdHJpbmcoMTYpfWVsc2V7cmV0dXJuIGEudG9TdHJpbmcoMTYpfX1mdW5jdGlvbiBwa2NzMXBhZDIoZSxoKXtpZihoPGUubGVuZ3RoKzExKXt0aHJvd1wiTWVzc2FnZSB0b28gbG9uZyBmb3IgUlNBXCI7cmV0dXJuIG51bGx9dmFyIGc9bmV3IEFycmF5KCk7dmFyIGQ9ZS5sZW5ndGgtMTt3aGlsZShkPj0wJiZoPjApe3ZhciBmPWUuY2hhckNvZGVBdChkLS0pO2lmKGY8MTI4KXtnWy0taF09Zn1lbHNle2lmKChmPjEyNykmJihmPDIwNDgpKXtnWy0taF09KGYmNjMpfDEyODtnWy0taF09KGY+PjYpfDE5Mn1lbHNle2dbLS1oXT0oZiY2Myl8MTI4O2dbLS1oXT0oKGY+PjYpJjYzKXwxMjg7Z1stLWhdPShmPj4xMil8MjI0fX19Z1stLWhdPTA7dmFyIGI9bmV3IFNlY3VyZVJhbmRvbSgpO3ZhciBhPW5ldyBBcnJheSgpO3doaWxlKGg+Mil7YVswXT0wO3doaWxlKGFbMF09PTApe2IubmV4dEJ5dGVzKGEpfWdbLS1oXT1hWzBdfWdbLS1oXT0yO2dbLS1oXT0wO3JldHVybiBuZXcgQmlnSW50ZWdlcihnKX1mdW5jdGlvbiBvYWVwX21nZjFfYXJyKGMsYSxlKXt2YXIgYj1cIlwiLGQ9MDt3aGlsZShiLmxlbmd0aDxhKXtiKz1lKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGMuY29uY2F0KFsoZCY0Mjc4MTkwMDgwKT4+MjQsKGQmMTY3MTE2ODApPj4xNiwoZCY2NTI4MCk+PjgsZCYyNTVdKSkpO2QrPTF9cmV0dXJuIGJ9ZnVuY3Rpb24gb2FlcF9wYWQocSxhLGYsbCl7dmFyIGM9S0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdDt2YXIgbz1LSlVSLmNyeXB0by5VdGlsO3ZhciBiPW51bGw7aWYoIWYpe2Y9XCJzaGExXCJ9aWYodHlwZW9mIGY9PT1cInN0cmluZ1wiKXtiPWMuZ2V0Q2Fub25pY2FsQWxnTmFtZShmKTtsPWMuZ2V0SGFzaExlbmd0aChiKTtmPWZ1bmN0aW9uKGkpe3JldHVybiBoZXh0b3JzdHIoby5oYXNoSGV4KHJzdHJ0b2hleChpKSxiKSl9fWlmKHEubGVuZ3RoKzIqbCsyPmEpe3Rocm93XCJNZXNzYWdlIHRvbyBsb25nIGZvciBSU0FcIn12YXIgaz1cIlwiLGU7Zm9yKGU9MDtlPGEtcS5sZW5ndGgtMipsLTI7ZSs9MSl7ays9XCJcXHgwMFwifXZhciBoPWYoXCJcIikraytcIlxceDAxXCIrcTt2YXIgZz1uZXcgQXJyYXkobCk7bmV3IFNlY3VyZVJhbmRvbSgpLm5leHRCeXRlcyhnKTt2YXIgaj1vYWVwX21nZjFfYXJyKGcsaC5sZW5ndGgsZik7dmFyIHA9W107Zm9yKGU9MDtlPGgubGVuZ3RoO2UrPTEpe3BbZV09aC5jaGFyQ29kZUF0KGUpXmouY2hhckNvZGVBdChlKX12YXIgbT1vYWVwX21nZjFfYXJyKHAsZy5sZW5ndGgsZik7dmFyIGQ9WzBdO2ZvcihlPTA7ZTxnLmxlbmd0aDtlKz0xKXtkW2UrMV09Z1tlXV5tLmNoYXJDb2RlQXQoZSl9cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGQuY29uY2F0KHApKX1mdW5jdGlvbiBSU0FLZXkoKXt0aGlzLm49bnVsbDt0aGlzLmU9MDt0aGlzLmQ9bnVsbDt0aGlzLnA9bnVsbDt0aGlzLnE9bnVsbDt0aGlzLmRtcDE9bnVsbDt0aGlzLmRtcTE9bnVsbDt0aGlzLmNvZWZmPW51bGx9ZnVuY3Rpb24gUlNBU2V0UHVibGljKGIsYSl7dGhpcy5pc1B1YmxpYz10cnVlO3RoaXMuaXNQcml2YXRlPWZhbHNlO2lmKHR5cGVvZiBiIT09XCJzdHJpbmdcIil7dGhpcy5uPWI7dGhpcy5lPWF9ZWxzZXtpZihiIT1udWxsJiZhIT1udWxsJiZiLmxlbmd0aD4wJiZhLmxlbmd0aD4wKXt0aGlzLm49cGFyc2VCaWdJbnQoYiwxNik7dGhpcy5lPXBhcnNlSW50KGEsMTYpfWVsc2V7dGhyb3dcIkludmFsaWQgUlNBIHB1YmxpYyBrZXlcIn19fWZ1bmN0aW9uIFJTQURvUHVibGljKGEpe3JldHVybiBhLm1vZFBvd0ludCh0aGlzLmUsdGhpcy5uKX1mdW5jdGlvbiBSU0FFbmNyeXB0KGQpe3ZhciBhPXBrY3MxcGFkMihkLCh0aGlzLm4uYml0TGVuZ3RoKCkrNyk+PjMpO2lmKGE9PW51bGwpe3JldHVybiBudWxsfXZhciBlPXRoaXMuZG9QdWJsaWMoYSk7aWYoZT09bnVsbCl7cmV0dXJuIG51bGx9dmFyIGI9ZS50b1N0cmluZygxNik7aWYoKGIubGVuZ3RoJjEpPT0wKXtyZXR1cm4gYn1lbHNle3JldHVyblwiMFwiK2J9fWZ1bmN0aW9uIFJTQUVuY3J5cHRPQUVQKGYsZSxiKXt2YXIgYT1vYWVwX3BhZChmLCh0aGlzLm4uYml0TGVuZ3RoKCkrNyk+PjMsZSxiKTtpZihhPT1udWxsKXtyZXR1cm4gbnVsbH12YXIgZz10aGlzLmRvUHVibGljKGEpO2lmKGc9PW51bGwpe3JldHVybiBudWxsfXZhciBkPWcudG9TdHJpbmcoMTYpO2lmKChkLmxlbmd0aCYxKT09MCl7cmV0dXJuIGR9ZWxzZXtyZXR1cm5cIjBcIitkfX1SU0FLZXkucHJvdG90eXBlLmRvUHVibGljPVJTQURvUHVibGljO1JTQUtleS5wcm90b3R5cGUuc2V0UHVibGljPVJTQVNldFB1YmxpYztSU0FLZXkucHJvdG90eXBlLmVuY3J5cHQ9UlNBRW5jcnlwdDtSU0FLZXkucHJvdG90eXBlLmVuY3J5cHRPQUVQPVJTQUVuY3J5cHRPQUVQO1JTQUtleS5wcm90b3R5cGUudHlwZT1cIlJTQVwiO1xuLyohIChjKSBUb20gV3UgfCBodHRwOi8vd3d3LWNzLXN0dWRlbnRzLnN0YW5mb3JkLmVkdS9+dGp3L2pzYm4vXG4gKi9cbmZ1bmN0aW9uIEVDRmllbGRFbGVtZW50RnAoYixhKXt0aGlzLng9YTt0aGlzLnE9Yn1mdW5jdGlvbiBmZUZwRXF1YWxzKGEpe2lmKGE9PXRoaXMpe3JldHVybiB0cnVlfXJldHVybih0aGlzLnEuZXF1YWxzKGEucSkmJnRoaXMueC5lcXVhbHMoYS54KSl9ZnVuY3Rpb24gZmVGcFRvQmlnSW50ZWdlcigpe3JldHVybiB0aGlzLnh9ZnVuY3Rpb24gZmVGcE5lZ2F0ZSgpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54Lm5lZ2F0ZSgpLm1vZCh0aGlzLnEpKX1mdW5jdGlvbiBmZUZwQWRkKGEpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54LmFkZChhLnRvQmlnSW50ZWdlcigpKS5tb2QodGhpcy5xKSl9ZnVuY3Rpb24gZmVGcFN1YnRyYWN0KGEpe3JldHVybiBuZXcgRUNGaWVsZEVsZW1lbnRGcCh0aGlzLnEsdGhpcy54LnN1YnRyYWN0KGEudG9CaWdJbnRlZ2VyKCkpLm1vZCh0aGlzLnEpKX1mdW5jdGlvbiBmZUZwTXVsdGlwbHkoYSl7cmV0dXJuIG5ldyBFQ0ZpZWxkRWxlbWVudEZwKHRoaXMucSx0aGlzLngubXVsdGlwbHkoYS50b0JpZ0ludGVnZXIoKSkubW9kKHRoaXMucSkpfWZ1bmN0aW9uIGZlRnBTcXVhcmUoKXtyZXR1cm4gbmV3IEVDRmllbGRFbGVtZW50RnAodGhpcy5xLHRoaXMueC5zcXVhcmUoKS5tb2QodGhpcy5xKSl9ZnVuY3Rpb24gZmVGcERpdmlkZShhKXtyZXR1cm4gbmV3IEVDRmllbGRFbGVtZW50RnAodGhpcy5xLHRoaXMueC5tdWx0aXBseShhLnRvQmlnSW50ZWdlcigpLm1vZEludmVyc2UodGhpcy5xKSkubW9kKHRoaXMucSkpfUVDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLmVxdWFscz1mZUZwRXF1YWxzO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLnRvQmlnSW50ZWdlcj1mZUZwVG9CaWdJbnRlZ2VyO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLm5lZ2F0ZT1mZUZwTmVnYXRlO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLmFkZD1mZUZwQWRkO0VDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLnN1YnRyYWN0PWZlRnBTdWJ0cmFjdDtFQ0ZpZWxkRWxlbWVudEZwLnByb3RvdHlwZS5tdWx0aXBseT1mZUZwTXVsdGlwbHk7RUNGaWVsZEVsZW1lbnRGcC5wcm90b3R5cGUuc3F1YXJlPWZlRnBTcXVhcmU7RUNGaWVsZEVsZW1lbnRGcC5wcm90b3R5cGUuZGl2aWRlPWZlRnBEaXZpZGU7ZnVuY3Rpb24gRUNQb2ludEZwKGMsYSxkLGIpe3RoaXMuY3VydmU9Yzt0aGlzLng9YTt0aGlzLnk9ZDtpZihiPT1udWxsKXt0aGlzLno9QmlnSW50ZWdlci5PTkV9ZWxzZXt0aGlzLno9Yn10aGlzLnppbnY9bnVsbH1mdW5jdGlvbiBwb2ludEZwR2V0WCgpe2lmKHRoaXMuemludj09bnVsbCl7dGhpcy56aW52PXRoaXMuei5tb2RJbnZlcnNlKHRoaXMuY3VydmUucSl9cmV0dXJuIHRoaXMuY3VydmUuZnJvbUJpZ0ludGVnZXIodGhpcy54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMuemludikubW9kKHRoaXMuY3VydmUucSkpfWZ1bmN0aW9uIHBvaW50RnBHZXRZKCl7aWYodGhpcy56aW52PT1udWxsKXt0aGlzLnppbnY9dGhpcy56Lm1vZEludmVyc2UodGhpcy5jdXJ2ZS5xKX1yZXR1cm4gdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcih0aGlzLnkudG9CaWdJbnRlZ2VyKCkubXVsdGlwbHkodGhpcy56aW52KS5tb2QodGhpcy5jdXJ2ZS5xKSl9ZnVuY3Rpb24gcG9pbnRGcEVxdWFscyhhKXtpZihhPT10aGlzKXtyZXR1cm4gdHJ1ZX1pZih0aGlzLmlzSW5maW5pdHkoKSl7cmV0dXJuIGEuaXNJbmZpbml0eSgpfWlmKGEuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCl9dmFyIGMsYjtjPWEueS50b0JpZ0ludGVnZXIoKS5tdWx0aXBseSh0aGlzLnopLnN1YnRyYWN0KHRoaXMueS50b0JpZ0ludGVnZXIoKS5tdWx0aXBseShhLnopKS5tb2QodGhpcy5jdXJ2ZS5xKTtpZighYy5lcXVhbHMoQmlnSW50ZWdlci5aRVJPKSl7cmV0dXJuIGZhbHNlfWI9YS54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMueikuc3VidHJhY3QodGhpcy54LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KGEueikpLm1vZCh0aGlzLmN1cnZlLnEpO3JldHVybiBiLmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pfWZ1bmN0aW9uIHBvaW50RnBJc0luZmluaXR5KCl7aWYoKHRoaXMueD09bnVsbCkmJih0aGlzLnk9PW51bGwpKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gdGhpcy56LmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pJiYhdGhpcy55LnRvQmlnSW50ZWdlcigpLmVxdWFscyhCaWdJbnRlZ2VyLlpFUk8pfWZ1bmN0aW9uIHBvaW50RnBOZWdhdGUoKXtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLmN1cnZlLHRoaXMueCx0aGlzLnkubmVnYXRlKCksdGhpcy56KX1mdW5jdGlvbiBwb2ludEZwQWRkKGwpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gbH1pZihsLmlzSW5maW5pdHkoKSl7cmV0dXJuIHRoaXN9dmFyIHA9bC55LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KHRoaXMueikuc3VidHJhY3QodGhpcy55LnRvQmlnSW50ZWdlcigpLm11bHRpcGx5KGwueikpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBvPWwueC50b0JpZ0ludGVnZXIoKS5tdWx0aXBseSh0aGlzLnopLnN1YnRyYWN0KHRoaXMueC50b0JpZ0ludGVnZXIoKS5tdWx0aXBseShsLnopKS5tb2QodGhpcy5jdXJ2ZS5xKTtpZihCaWdJbnRlZ2VyLlpFUk8uZXF1YWxzKG8pKXtpZihCaWdJbnRlZ2VyLlpFUk8uZXF1YWxzKHApKXtyZXR1cm4gdGhpcy50d2ljZSgpfXJldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGo9bmV3IEJpZ0ludGVnZXIoXCIzXCIpO3ZhciBlPXRoaXMueC50b0JpZ0ludGVnZXIoKTt2YXIgbj10aGlzLnkudG9CaWdJbnRlZ2VyKCk7dmFyIGM9bC54LnRvQmlnSW50ZWdlcigpO3ZhciBrPWwueS50b0JpZ0ludGVnZXIoKTt2YXIgbT1vLnNxdWFyZSgpO3ZhciBpPW0ubXVsdGlwbHkobyk7dmFyIGQ9ZS5tdWx0aXBseShtKTt2YXIgZz1wLnNxdWFyZSgpLm11bHRpcGx5KHRoaXMueik7dmFyIGE9Zy5zdWJ0cmFjdChkLnNoaWZ0TGVmdCgxKSkubXVsdGlwbHkobC56KS5zdWJ0cmFjdChpKS5tdWx0aXBseShvKS5tb2QodGhpcy5jdXJ2ZS5xKTt2YXIgaD1kLm11bHRpcGx5KGopLm11bHRpcGx5KHApLnN1YnRyYWN0KG4ubXVsdGlwbHkoaSkpLnN1YnRyYWN0KGcubXVsdGlwbHkocCkpLm11bHRpcGx5KGwueikuYWRkKHAubXVsdGlwbHkoaSkpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBmPWkubXVsdGlwbHkodGhpcy56KS5tdWx0aXBseShsLnopLm1vZCh0aGlzLmN1cnZlLnEpO3JldHVybiBuZXcgRUNQb2ludEZwKHRoaXMuY3VydmUsdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihhKSx0aGlzLmN1cnZlLmZyb21CaWdJbnRlZ2VyKGgpLGYpfWZ1bmN0aW9uIHBvaW50RnBUd2ljZSgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpc31pZih0aGlzLnkudG9CaWdJbnRlZ2VyKCkuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGc9bmV3IEJpZ0ludGVnZXIoXCIzXCIpO3ZhciBjPXRoaXMueC50b0JpZ0ludGVnZXIoKTt2YXIgaD10aGlzLnkudG9CaWdJbnRlZ2VyKCk7dmFyIGU9aC5tdWx0aXBseSh0aGlzLnopO3ZhciBqPWUubXVsdGlwbHkoaCkubW9kKHRoaXMuY3VydmUucSk7dmFyIGk9dGhpcy5jdXJ2ZS5hLnRvQmlnSW50ZWdlcigpO3ZhciBrPWMuc3F1YXJlKCkubXVsdGlwbHkoZyk7aWYoIUJpZ0ludGVnZXIuWkVSTy5lcXVhbHMoaSkpe2s9ay5hZGQodGhpcy56LnNxdWFyZSgpLm11bHRpcGx5KGkpKX1rPWsubW9kKHRoaXMuY3VydmUucSk7dmFyIGI9ay5zcXVhcmUoKS5zdWJ0cmFjdChjLnNoaWZ0TGVmdCgzKS5tdWx0aXBseShqKSkuc2hpZnRMZWZ0KDEpLm11bHRpcGx5KGUpLm1vZCh0aGlzLmN1cnZlLnEpO3ZhciBmPWsubXVsdGlwbHkoZykubXVsdGlwbHkoYykuc3VidHJhY3Qoai5zaGlmdExlZnQoMSkpLnNoaWZ0TGVmdCgyKS5tdWx0aXBseShqKS5zdWJ0cmFjdChrLnNxdWFyZSgpLm11bHRpcGx5KGspKS5tb2QodGhpcy5jdXJ2ZS5xKTt2YXIgZD1lLnNxdWFyZSgpLm11bHRpcGx5KGUpLnNoaWZ0TGVmdCgzKS5tb2QodGhpcy5jdXJ2ZS5xKTtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLmN1cnZlLHRoaXMuY3VydmUuZnJvbUJpZ0ludGVnZXIoYiksdGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihmKSxkKX1mdW5jdGlvbiBwb2ludEZwTXVsdGlwbHkoYil7aWYodGhpcy5pc0luZmluaXR5KCkpe3JldHVybiB0aGlzfWlmKGIuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGc9Yjt2YXIgZj1nLm11bHRpcGx5KG5ldyBCaWdJbnRlZ2VyKFwiM1wiKSk7dmFyIGw9dGhpcy5uZWdhdGUoKTt2YXIgZD10aGlzO3ZhciBjO2ZvcihjPWYuYml0TGVuZ3RoKCktMjtjPjA7LS1jKXtkPWQudHdpY2UoKTt2YXIgYT1mLnRlc3RCaXQoYyk7dmFyIGo9Zy50ZXN0Qml0KGMpO2lmKGEhPWope2Q9ZC5hZGQoYT90aGlzOmwpfX1yZXR1cm4gZH1mdW5jdGlvbiBwb2ludEZwTXVsdGlwbHlUd28oYyxhLGIpe3ZhciBkO2lmKGMuYml0TGVuZ3RoKCk+Yi5iaXRMZW5ndGgoKSl7ZD1jLmJpdExlbmd0aCgpLTF9ZWxzZXtkPWIuYml0TGVuZ3RoKCktMX12YXIgZj10aGlzLmN1cnZlLmdldEluZmluaXR5KCk7dmFyIGU9dGhpcy5hZGQoYSk7d2hpbGUoZD49MCl7Zj1mLnR3aWNlKCk7aWYoYy50ZXN0Qml0KGQpKXtpZihiLnRlc3RCaXQoZCkpe2Y9Zi5hZGQoZSl9ZWxzZXtmPWYuYWRkKHRoaXMpfX1lbHNle2lmKGIudGVzdEJpdChkKSl7Zj1mLmFkZChhKX19LS1kfXJldHVybiBmfUVDUG9pbnRGcC5wcm90b3R5cGUuZ2V0WD1wb2ludEZwR2V0WDtFQ1BvaW50RnAucHJvdG90eXBlLmdldFk9cG9pbnRGcEdldFk7RUNQb2ludEZwLnByb3RvdHlwZS5lcXVhbHM9cG9pbnRGcEVxdWFscztFQ1BvaW50RnAucHJvdG90eXBlLmlzSW5maW5pdHk9cG9pbnRGcElzSW5maW5pdHk7RUNQb2ludEZwLnByb3RvdHlwZS5uZWdhdGU9cG9pbnRGcE5lZ2F0ZTtFQ1BvaW50RnAucHJvdG90eXBlLmFkZD1wb2ludEZwQWRkO0VDUG9pbnRGcC5wcm90b3R5cGUudHdpY2U9cG9pbnRGcFR3aWNlO0VDUG9pbnRGcC5wcm90b3R5cGUubXVsdGlwbHk9cG9pbnRGcE11bHRpcGx5O0VDUG9pbnRGcC5wcm90b3R5cGUubXVsdGlwbHlUd289cG9pbnRGcE11bHRpcGx5VHdvO2Z1bmN0aW9uIEVDQ3VydmVGcChlLGQsYyl7dGhpcy5xPWU7dGhpcy5hPXRoaXMuZnJvbUJpZ0ludGVnZXIoZCk7dGhpcy5iPXRoaXMuZnJvbUJpZ0ludGVnZXIoYyk7dGhpcy5pbmZpbml0eT1uZXcgRUNQb2ludEZwKHRoaXMsbnVsbCxudWxsKX1mdW5jdGlvbiBjdXJ2ZUZwR2V0USgpe3JldHVybiB0aGlzLnF9ZnVuY3Rpb24gY3VydmVGcEdldEEoKXtyZXR1cm4gdGhpcy5hfWZ1bmN0aW9uIGN1cnZlRnBHZXRCKCl7cmV0dXJuIHRoaXMuYn1mdW5jdGlvbiBjdXJ2ZUZwRXF1YWxzKGEpe2lmKGE9PXRoaXMpe3JldHVybiB0cnVlfXJldHVybih0aGlzLnEuZXF1YWxzKGEucSkmJnRoaXMuYS5lcXVhbHMoYS5hKSYmdGhpcy5iLmVxdWFscyhhLmIpKX1mdW5jdGlvbiBjdXJ2ZUZwR2V0SW5maW5pdHkoKXtyZXR1cm4gdGhpcy5pbmZpbml0eX1mdW5jdGlvbiBjdXJ2ZUZwRnJvbUJpZ0ludGVnZXIoYSl7cmV0dXJuIG5ldyBFQ0ZpZWxkRWxlbWVudEZwKHRoaXMucSxhKX1mdW5jdGlvbiBjdXJ2ZUZwRGVjb2RlUG9pbnRIZXgoZCl7c3dpdGNoKHBhcnNlSW50KGQuc3Vic3RyKDAsMiksMTYpKXtjYXNlIDA6cmV0dXJuIHRoaXMuaW5maW5pdHk7Y2FzZSAyOmNhc2UgMzpyZXR1cm4gbnVsbDtjYXNlIDQ6Y2FzZSA2OmNhc2UgNzp2YXIgYT0oZC5sZW5ndGgtMikvMjt2YXIgYz1kLnN1YnN0cigyLGEpO3ZhciBiPWQuc3Vic3RyKGErMixhKTtyZXR1cm4gbmV3IEVDUG9pbnRGcCh0aGlzLHRoaXMuZnJvbUJpZ0ludGVnZXIobmV3IEJpZ0ludGVnZXIoYywxNikpLHRoaXMuZnJvbUJpZ0ludGVnZXIobmV3IEJpZ0ludGVnZXIoYiwxNikpKTtkZWZhdWx0OnJldHVybiBudWxsfX1FQ0N1cnZlRnAucHJvdG90eXBlLmdldFE9Y3VydmVGcEdldFE7RUNDdXJ2ZUZwLnByb3RvdHlwZS5nZXRBPWN1cnZlRnBHZXRBO0VDQ3VydmVGcC5wcm90b3R5cGUuZ2V0Qj1jdXJ2ZUZwR2V0QjtFQ0N1cnZlRnAucHJvdG90eXBlLmVxdWFscz1jdXJ2ZUZwRXF1YWxzO0VDQ3VydmVGcC5wcm90b3R5cGUuZ2V0SW5maW5pdHk9Y3VydmVGcEdldEluZmluaXR5O0VDQ3VydmVGcC5wcm90b3R5cGUuZnJvbUJpZ0ludGVnZXI9Y3VydmVGcEZyb21CaWdJbnRlZ2VyO0VDQ3VydmVGcC5wcm90b3R5cGUuZGVjb2RlUG9pbnRIZXg9Y3VydmVGcERlY29kZVBvaW50SGV4O1xuLyohIChjKSBTdGVmYW4gVGhvbWFzIHwgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliXG4gKi9cbkVDRmllbGRFbGVtZW50RnAucHJvdG90eXBlLmdldEJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigodGhpcy50b0JpZ0ludGVnZXIoKS5iaXRMZW5ndGgoKSs3KS84KX07RUNQb2ludEZwLnByb3RvdHlwZS5nZXRFbmNvZGVkPWZ1bmN0aW9uKGMpe3ZhciBkPWZ1bmN0aW9uKGgsZil7dmFyIGc9aC50b0J5dGVBcnJheVVuc2lnbmVkKCk7aWYoZjxnLmxlbmd0aCl7Zz1nLnNsaWNlKGcubGVuZ3RoLWYpfWVsc2V7d2hpbGUoZj5nLmxlbmd0aCl7Zy51bnNoaWZ0KDApfX1yZXR1cm4gZ307dmFyIGE9dGhpcy5nZXRYKCkudG9CaWdJbnRlZ2VyKCk7dmFyIGU9dGhpcy5nZXRZKCkudG9CaWdJbnRlZ2VyKCk7dmFyIGI9ZChhLDMyKTtpZihjKXtpZihlLmlzRXZlbigpKXtiLnVuc2hpZnQoMil9ZWxzZXtiLnVuc2hpZnQoMyl9fWVsc2V7Yi51bnNoaWZ0KDQpO2I9Yi5jb25jYXQoZChlLDMyKSl9cmV0dXJuIGJ9O0VDUG9pbnRGcC5kZWNvZGVGcm9tPWZ1bmN0aW9uKGcsYyl7dmFyIGY9Y1swXTt2YXIgZT1jLmxlbmd0aC0xO3ZhciBkPWMuc2xpY2UoMSwxK2UvMik7dmFyIGI9Yy5zbGljZSgxK2UvMiwxK2UpO2QudW5zaGlmdCgwKTtiLnVuc2hpZnQoMCk7dmFyIGE9bmV3IEJpZ0ludGVnZXIoZCk7dmFyIGg9bmV3IEJpZ0ludGVnZXIoYik7cmV0dXJuIG5ldyBFQ1BvaW50RnAoZyxnLmZyb21CaWdJbnRlZ2VyKGEpLGcuZnJvbUJpZ0ludGVnZXIoaCkpfTtFQ1BvaW50RnAuZGVjb2RlRnJvbUhleD1mdW5jdGlvbihnLGMpe3ZhciBmPWMuc3Vic3RyKDAsMik7dmFyIGU9Yy5sZW5ndGgtMjt2YXIgZD1jLnN1YnN0cigyLGUvMik7dmFyIGI9Yy5zdWJzdHIoMitlLzIsZS8yKTt2YXIgYT1uZXcgQmlnSW50ZWdlcihkLDE2KTt2YXIgaD1uZXcgQmlnSW50ZWdlcihiLDE2KTtyZXR1cm4gbmV3IEVDUG9pbnRGcChnLGcuZnJvbUJpZ0ludGVnZXIoYSksZy5mcm9tQmlnSW50ZWdlcihoKSl9O0VDUG9pbnRGcC5wcm90b3R5cGUuYWRkMkQ9ZnVuY3Rpb24oYyl7aWYodGhpcy5pc0luZmluaXR5KCkpe3JldHVybiBjfWlmKGMuaXNJbmZpbml0eSgpKXtyZXR1cm4gdGhpc31pZih0aGlzLnguZXF1YWxzKGMueCkpe2lmKHRoaXMueS5lcXVhbHMoYy55KSl7cmV0dXJuIHRoaXMudHdpY2UoKX1yZXR1cm4gdGhpcy5jdXJ2ZS5nZXRJbmZpbml0eSgpfXZhciBnPWMueC5zdWJ0cmFjdCh0aGlzLngpO3ZhciBlPWMueS5zdWJ0cmFjdCh0aGlzLnkpO3ZhciBhPWUuZGl2aWRlKGcpO3ZhciBkPWEuc3F1YXJlKCkuc3VidHJhY3QodGhpcy54KS5zdWJ0cmFjdChjLngpO3ZhciBmPWEubXVsdGlwbHkodGhpcy54LnN1YnRyYWN0KGQpKS5zdWJ0cmFjdCh0aGlzLnkpO3JldHVybiBuZXcgRUNQb2ludEZwKHRoaXMuY3VydmUsZCxmKX07RUNQb2ludEZwLnByb3RvdHlwZS50d2ljZTJEPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkpe3JldHVybiB0aGlzfWlmKHRoaXMueS50b0JpZ0ludGVnZXIoKS5zaWdudW0oKT09MCl7cmV0dXJuIHRoaXMuY3VydmUuZ2V0SW5maW5pdHkoKX12YXIgYj10aGlzLmN1cnZlLmZyb21CaWdJbnRlZ2VyKEJpZ0ludGVnZXIudmFsdWVPZigyKSk7dmFyIGU9dGhpcy5jdXJ2ZS5mcm9tQmlnSW50ZWdlcihCaWdJbnRlZ2VyLnZhbHVlT2YoMykpO3ZhciBhPXRoaXMueC5zcXVhcmUoKS5tdWx0aXBseShlKS5hZGQodGhpcy5jdXJ2ZS5hKS5kaXZpZGUodGhpcy55Lm11bHRpcGx5KGIpKTt2YXIgYz1hLnNxdWFyZSgpLnN1YnRyYWN0KHRoaXMueC5tdWx0aXBseShiKSk7dmFyIGQ9YS5tdWx0aXBseSh0aGlzLnguc3VidHJhY3QoYykpLnN1YnRyYWN0KHRoaXMueSk7cmV0dXJuIG5ldyBFQ1BvaW50RnAodGhpcy5jdXJ2ZSxjLGQpfTtFQ1BvaW50RnAucHJvdG90eXBlLm11bHRpcGx5MkQ9ZnVuY3Rpb24oYil7aWYodGhpcy5pc0luZmluaXR5KCkpe3JldHVybiB0aGlzfWlmKGIuc2lnbnVtKCk9PTApe3JldHVybiB0aGlzLmN1cnZlLmdldEluZmluaXR5KCl9dmFyIGc9Yjt2YXIgZj1nLm11bHRpcGx5KG5ldyBCaWdJbnRlZ2VyKFwiM1wiKSk7dmFyIGw9dGhpcy5uZWdhdGUoKTt2YXIgZD10aGlzO3ZhciBjO2ZvcihjPWYuYml0TGVuZ3RoKCktMjtjPjA7LS1jKXtkPWQudHdpY2UoKTt2YXIgYT1mLnRlc3RCaXQoYyk7dmFyIGo9Zy50ZXN0Qml0KGMpO2lmKGEhPWope2Q9ZC5hZGQyRChhP3RoaXM6bCl9fXJldHVybiBkfTtFQ1BvaW50RnAucHJvdG90eXBlLmlzT25DdXJ2ZT1mdW5jdGlvbigpe3ZhciBkPXRoaXMuZ2V0WCgpLnRvQmlnSW50ZWdlcigpO3ZhciBpPXRoaXMuZ2V0WSgpLnRvQmlnSW50ZWdlcigpO3ZhciBmPXRoaXMuY3VydmUuZ2V0QSgpLnRvQmlnSW50ZWdlcigpO3ZhciBjPXRoaXMuY3VydmUuZ2V0QigpLnRvQmlnSW50ZWdlcigpO3ZhciBoPXRoaXMuY3VydmUuZ2V0USgpO3ZhciBlPWkubXVsdGlwbHkoaSkubW9kKGgpO3ZhciBnPWQubXVsdGlwbHkoZCkubXVsdGlwbHkoZCkuYWRkKGYubXVsdGlwbHkoZCkpLmFkZChjKS5tb2QoaCk7cmV0dXJuIGUuZXF1YWxzKGcpfTtFQ1BvaW50RnAucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCIoXCIrdGhpcy5nZXRYKCkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKStcIixcIit0aGlzLmdldFkoKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpK1wiKVwifTtFQ1BvaW50RnAucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5jdXJ2ZS5nZXRRKCk7aWYodGhpcy5pc0luZmluaXR5KCkpe3Rocm93IG5ldyBFcnJvcihcIlBvaW50IGlzIGF0IGluZmluaXR5LlwiKX12YXIgYT10aGlzLmdldFgoKS50b0JpZ0ludGVnZXIoKTt2YXIgYj10aGlzLmdldFkoKS50b0JpZ0ludGVnZXIoKTtpZihhLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSk8MHx8YS5jb21wYXJlVG8oYy5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSkpPjApe3Rocm93IG5ldyBFcnJvcihcInggY29vcmRpbmF0ZSBvdXQgb2YgYm91bmRzXCIpfWlmKGIuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKTwwfHxiLmNvbXBhcmVUbyhjLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKSk+MCl7dGhyb3cgbmV3IEVycm9yKFwieSBjb29yZGluYXRlIG91dCBvZiBib3VuZHNcIil9aWYoIXRoaXMuaXNPbkN1cnZlKCkpe3Rocm93IG5ldyBFcnJvcihcIlBvaW50IGlzIG5vdCBvbiB0aGUgY3VydmUuXCIpfWlmKHRoaXMubXVsdGlwbHkoYykuaXNJbmZpbml0eSgpKXt0aHJvdyBuZXcgRXJyb3IoXCJQb2ludCBpcyBub3QgYSBzY2FsYXIgbXVsdGlwbGUgb2YgRy5cIil9cmV0dXJuIHRydWV9O1xuLyohIE1pa2UgU2FtdWVsIChjKSAyMDA5IHwgY29kZS5nb29nbGUuY29tL3AvanNvbi1zYW5zLWV2YWxcbiAqL1xudmFyIGpzb25QYXJzZT0oZnVuY3Rpb24oKXt2YXIgZT1cIig/Oi0/XFxcXGIoPzowfFsxLTldWzAtOV0qKSg/OlxcXFwuWzAtOV0rKT8oPzpbZUVdWystXT9bMC05XSspP1xcXFxiKVwiO3ZhciBqPScoPzpbXlxcXFwwLVxcXFx4MDhcXFxceDBhLVxcXFx4MWZcIlxcXFxcXFxcXXxcXFxcXFxcXCg/OltcIi9cXFxcXFxcXGJmbnJ0XXx1WzAtOUEtRmEtZl17NH0pKSc7dmFyIGk9Jyg/OlwiJytqKycqXCIpJzt2YXIgZD1uZXcgUmVnRXhwKFwiKD86ZmFsc2V8dHJ1ZXxudWxsfFtcXFxce1xcXFx9XFxcXFtcXFxcXV18XCIrZStcInxcIitpK1wiKVwiLFwiZ1wiKTt2YXIgaz1uZXcgUmVnRXhwKFwiXFxcXFxcXFwoPzooW151XSl8dSguezR9KSlcIixcImdcIik7dmFyIGc9eydcIic6J1wiJyxcIi9cIjpcIi9cIixcIlxcXFxcIjpcIlxcXFxcIixiOlwiXFxiXCIsZjpcIlxcZlwiLG46XCJcXG5cIixyOlwiXFxyXCIsdDpcIlxcdFwifTtmdW5jdGlvbiBoKGwsbSxuKXtyZXR1cm4gbT9nW21dOlN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQobiwxNikpfXZhciBjPW5ldyBTdHJpbmcoXCJcIik7dmFyIGE9XCJcXFxcXCI7dmFyIGY9e1wie1wiOk9iamVjdCxcIltcIjpBcnJheX07dmFyIGI9T2JqZWN0Lmhhc093blByb3BlcnR5O3JldHVybiBmdW5jdGlvbih1LHEpe3ZhciBwPXUubWF0Y2goZCk7dmFyIHg7dmFyIHY9cFswXTt2YXIgbD1mYWxzZTtpZihcIntcIj09PXYpe3g9e319ZWxzZXtpZihcIltcIj09PXYpe3g9W119ZWxzZXt4PVtdO2w9dHJ1ZX19dmFyIHQ7dmFyIHI9W3hdO2Zvcih2YXIgbz0xLWwsbT1wLmxlbmd0aDtvPG07KytvKXt2PXBbb107dmFyIHc7c3dpdGNoKHYuY2hhckNvZGVBdCgwKSl7ZGVmYXVsdDp3PXJbMF07d1t0fHx3Lmxlbmd0aF09Kyh2KTt0PXZvaWQgMDticmVhaztjYXNlIDM0OnY9di5zdWJzdHJpbmcoMSx2Lmxlbmd0aC0xKTtpZih2LmluZGV4T2YoYSkhPT0tMSl7dj12LnJlcGxhY2UoayxoKX13PXJbMF07aWYoIXQpe2lmKHcgaW5zdGFuY2VvZiBBcnJheSl7dD13Lmxlbmd0aH1lbHNle3Q9dnx8YzticmVha319d1t0XT12O3Q9dm9pZCAwO2JyZWFrO2Nhc2UgOTE6dz1yWzBdO3IudW5zaGlmdCh3W3R8fHcubGVuZ3RoXT1bXSk7dD12b2lkIDA7YnJlYWs7Y2FzZSA5MzpyLnNoaWZ0KCk7YnJlYWs7Y2FzZSAxMDI6dz1yWzBdO3dbdHx8dy5sZW5ndGhdPWZhbHNlO3Q9dm9pZCAwO2JyZWFrO2Nhc2UgMTEwOnc9clswXTt3W3R8fHcubGVuZ3RoXT1udWxsO3Q9dm9pZCAwO2JyZWFrO2Nhc2UgMTE2Onc9clswXTt3W3R8fHcubGVuZ3RoXT10cnVlO3Q9dm9pZCAwO2JyZWFrO2Nhc2UgMTIzOnc9clswXTtyLnVuc2hpZnQod1t0fHx3Lmxlbmd0aF09e30pO3Q9dm9pZCAwO2JyZWFrO2Nhc2UgMTI1OnIuc2hpZnQoKTticmVha319aWYobCl7aWYoci5sZW5ndGghPT0xKXt0aHJvdyBuZXcgRXJyb3IoKX14PXhbMF19ZWxzZXtpZihyLmxlbmd0aCl7dGhyb3cgbmV3IEVycm9yKCl9fWlmKHEpe3ZhciBzPWZ1bmN0aW9uKEMsQil7dmFyIEQ9Q1tCXTtpZihEJiZ0eXBlb2YgRD09PVwib2JqZWN0XCIpe3ZhciBuPW51bGw7Zm9yKHZhciB6IGluIEQpe2lmKGIuY2FsbChELHopJiZEIT09Qyl7dmFyIHk9cyhELHopO2lmKHkhPT12b2lkIDApe0Rbel09eX1lbHNle2lmKCFuKXtuPVtdfW4ucHVzaCh6KX19fWlmKG4pe2Zvcih2YXIgQT1uLmxlbmd0aDstLUE+PTA7KXtkZWxldGUgRFtuW0FdXX19fXJldHVybiBxLmNhbGwoQyxCLEQpfTt4PXMoe1wiXCI6eH0sXCJcIil9cmV0dXJuIHh9fSkoKTtcbmlmKHR5cGVvZiBLSlVSPT1cInVuZGVmaW5lZFwifHwhS0pVUil7S0pVUj17fX1pZih0eXBlb2YgS0pVUi5hc24xPT1cInVuZGVmaW5lZFwifHwhS0pVUi5hc24xKXtLSlVSLmFzbjE9e319S0pVUi5hc24xLkFTTjFVdGlsPW5ldyBmdW5jdGlvbigpe3RoaXMuaW50ZWdlclRvQnl0ZUhleD1mdW5jdGlvbihhKXt2YXIgYj1hLnRvU3RyaW5nKDE2KTtpZigoYi5sZW5ndGglMik9PTEpe2I9XCIwXCIrYn1yZXR1cm4gYn07dGhpcy5iaWdJbnRUb01pblR3b3NDb21wbGVtZW50c0hleD1mdW5jdGlvbihqKXt2YXIgZj1qLnRvU3RyaW5nKDE2KTtpZihmLnN1YnN0cigwLDEpIT1cIi1cIil7aWYoZi5sZW5ndGglMj09MSl7Zj1cIjBcIitmfWVsc2V7aWYoIWYubWF0Y2goL15bMC03XS8pKXtmPVwiMDBcIitmfX19ZWxzZXt2YXIgYT1mLnN1YnN0cigxKTt2YXIgZT1hLmxlbmd0aDtpZihlJTI9PTEpe2UrPTF9ZWxzZXtpZighZi5tYXRjaCgvXlswLTddLykpe2UrPTJ9fXZhciBnPVwiXCI7Zm9yKHZhciBkPTA7ZDxlO2QrKyl7Zys9XCJmXCJ9dmFyIGM9bmV3IEJpZ0ludGVnZXIoZywxNik7dmFyIGI9Yy54b3IoaikuYWRkKEJpZ0ludGVnZXIuT05FKTtmPWIudG9TdHJpbmcoMTYpLnJlcGxhY2UoL14tLyxcIlwiKX1yZXR1cm4gZn07dGhpcy5nZXRQRU1TdHJpbmdGcm9tSGV4PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGhleHRvcGVtKGEsYil9O3RoaXMubmV3T2JqZWN0PWZ1bmN0aW9uKGspe3ZhciBEPUtKVVIsbj1ELmFzbjEsej1uLkRFUkJvb2xlYW4sZT1uLkRFUkludGVnZXIscz1uLkRFUkJpdFN0cmluZyxoPW4uREVST2N0ZXRTdHJpbmcsdj1uLkRFUk51bGwsdz1uLkRFUk9iamVjdElkZW50aWZpZXIsbD1uLkRFUkVudW1lcmF0ZWQsZz1uLkRFUlVURjhTdHJpbmcsZj1uLkRFUk51bWVyaWNTdHJpbmcseT1uLkRFUlByaW50YWJsZVN0cmluZyx1PW4uREVSVGVsZXRleFN0cmluZyxwPW4uREVSSUE1U3RyaW5nLEM9bi5ERVJVVENUaW1lLGo9bi5ERVJHZW5lcmFsaXplZFRpbWUsbT1uLkRFUlNlcXVlbmNlLGM9bi5ERVJTZXQscj1uLkRFUlRhZ2dlZE9iamVjdCxvPW4uQVNOMVV0aWwubmV3T2JqZWN0O3ZhciB0PU9iamVjdC5rZXlzKGspO2lmKHQubGVuZ3RoIT0xKXt0aHJvd1wia2V5IG9mIHBhcmFtIHNoYWxsIGJlIG9ubHkgb25lLlwifXZhciBGPXRbMF07aWYoXCI6Ym9vbDppbnQ6Yml0c3RyOm9jdHN0cjpudWxsOm9pZDplbnVtOnV0ZjhzdHI6bnVtc3RyOnBybnN0cjp0ZWxzdHI6aWE1c3RyOnV0Y3RpbWU6Z2VudGltZTpzZXE6c2V0OnRhZzpcIi5pbmRleE9mKFwiOlwiK0YrXCI6XCIpPT0tMSl7dGhyb3dcInVuZGVmaW5lZCBrZXk6IFwiK0Z9aWYoRj09XCJib29sXCIpe3JldHVybiBuZXcgeihrW0ZdKX1pZihGPT1cImludFwiKXtyZXR1cm4gbmV3IGUoa1tGXSl9aWYoRj09XCJiaXRzdHJcIil7cmV0dXJuIG5ldyBzKGtbRl0pfWlmKEY9PVwib2N0c3RyXCIpe3JldHVybiBuZXcgaChrW0ZdKX1pZihGPT1cIm51bGxcIil7cmV0dXJuIG5ldyB2KGtbRl0pfWlmKEY9PVwib2lkXCIpe3JldHVybiBuZXcgdyhrW0ZdKX1pZihGPT1cImVudW1cIil7cmV0dXJuIG5ldyBsKGtbRl0pfWlmKEY9PVwidXRmOHN0clwiKXtyZXR1cm4gbmV3IGcoa1tGXSl9aWYoRj09XCJudW1zdHJcIil7cmV0dXJuIG5ldyBmKGtbRl0pfWlmKEY9PVwicHJuc3RyXCIpe3JldHVybiBuZXcgeShrW0ZdKX1pZihGPT1cInRlbHN0clwiKXtyZXR1cm4gbmV3IHUoa1tGXSl9aWYoRj09XCJpYTVzdHJcIil7cmV0dXJuIG5ldyBwKGtbRl0pfWlmKEY9PVwidXRjdGltZVwiKXtyZXR1cm4gbmV3IEMoa1tGXSl9aWYoRj09XCJnZW50aW1lXCIpe3JldHVybiBuZXcgaihrW0ZdKX1pZihGPT1cInNlcVwiKXt2YXIgZD1rW0ZdO3ZhciBFPVtdO2Zvcih2YXIgeD0wO3g8ZC5sZW5ndGg7eCsrKXt2YXIgQj1vKGRbeF0pO0UucHVzaChCKX1yZXR1cm4gbmV3IG0oe2FycmF5OkV9KX1pZihGPT1cInNldFwiKXt2YXIgZD1rW0ZdO3ZhciBFPVtdO2Zvcih2YXIgeD0wO3g8ZC5sZW5ndGg7eCsrKXt2YXIgQj1vKGRbeF0pO0UucHVzaChCKX1yZXR1cm4gbmV3IGMoe2FycmF5OkV9KX1pZihGPT1cInRhZ1wiKXt2YXIgQT1rW0ZdO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChBKT09PVwiW29iamVjdCBBcnJheV1cIiYmQS5sZW5ndGg9PTMpe3ZhciBxPW8oQVsyXSk7cmV0dXJuIG5ldyByKHt0YWc6QVswXSxleHBsaWNpdDpBWzFdLG9iajpxfSl9ZWxzZXt2YXIgYj17fTtpZihBLmV4cGxpY2l0IT09dW5kZWZpbmVkKXtiLmV4cGxpY2l0PUEuZXhwbGljaXR9aWYoQS50YWchPT11bmRlZmluZWQpe2IudGFnPUEudGFnfWlmKEEub2JqPT09dW5kZWZpbmVkKXt0aHJvd1wib2JqIHNoYWxsIGJlIHNwZWNpZmllZCBmb3IgJ3RhZycuXCJ9Yi5vYmo9byhBLm9iaik7cmV0dXJuIG5ldyByKGIpfX19O3RoaXMuanNvblRvQVNOMUhFWD1mdW5jdGlvbihiKXt2YXIgYT10aGlzLm5ld09iamVjdChiKTtyZXR1cm4gYS5nZXRFbmNvZGVkSGV4KCl9fTtLSlVSLmFzbjEuQVNOMVV0aWwub2lkSGV4VG9JbnQ9ZnVuY3Rpb24oYSl7dmFyIGo9XCJcIjt2YXIgaz1wYXJzZUludChhLnN1YnN0cigwLDIpLDE2KTt2YXIgZD1NYXRoLmZsb29yKGsvNDApO3ZhciBjPWslNDA7dmFyIGo9ZCtcIi5cIitjO3ZhciBlPVwiXCI7Zm9yKHZhciBmPTI7ZjxhLmxlbmd0aDtmKz0yKXt2YXIgZz1wYXJzZUludChhLnN1YnN0cihmLDIpLDE2KTt2YXIgaD0oXCIwMDAwMDAwMFwiK2cudG9TdHJpbmcoMikpLnNsaWNlKC04KTtlPWUraC5zdWJzdHIoMSw3KTtpZihoLnN1YnN0cigwLDEpPT1cIjBcIil7dmFyIGI9bmV3IEJpZ0ludGVnZXIoZSwyKTtqPWorXCIuXCIrYi50b1N0cmluZygxMCk7ZT1cIlwifX1yZXR1cm4gan07S0pVUi5hc24xLkFTTjFVdGlsLm9pZEludFRvSGV4PWZ1bmN0aW9uKGYpe3ZhciBlPWZ1bmN0aW9uKGEpe3ZhciBrPWEudG9TdHJpbmcoMTYpO2lmKGsubGVuZ3RoPT0xKXtrPVwiMFwiK2t9cmV0dXJuIGt9O3ZhciBkPWZ1bmN0aW9uKG8pe3ZhciBuPVwiXCI7dmFyIGs9bmV3IEJpZ0ludGVnZXIobywxMCk7dmFyIGE9ay50b1N0cmluZygyKTt2YXIgbD03LWEubGVuZ3RoJTc7aWYobD09Nyl7bD0wfXZhciBxPVwiXCI7Zm9yKHZhciBtPTA7bTxsO20rKyl7cSs9XCIwXCJ9YT1xK2E7Zm9yKHZhciBtPTA7bTxhLmxlbmd0aC0xO20rPTcpe3ZhciBwPWEuc3Vic3RyKG0sNyk7aWYobSE9YS5sZW5ndGgtNyl7cD1cIjFcIitwfW4rPWUocGFyc2VJbnQocCwyKSl9cmV0dXJuIG59O2lmKCFmLm1hdGNoKC9eWzAtOS5dKyQvKSl7dGhyb3dcIm1hbGZvcm1lZCBvaWQgc3RyaW5nOiBcIitmfXZhciBnPVwiXCI7dmFyIGI9Zi5zcGxpdChcIi5cIik7dmFyIGo9cGFyc2VJbnQoYlswXSkqNDArcGFyc2VJbnQoYlsxXSk7Zys9ZShqKTtiLnNwbGljZSgwLDIpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXtnKz1kKGJbY10pfXJldHVybiBnfTtLSlVSLmFzbjEuQVNOMU9iamVjdD1mdW5jdGlvbigpe3ZhciBjPXRydWU7dmFyIGI9bnVsbDt2YXIgZD1cIjAwXCI7dmFyIGU9XCIwMFwiO3ZhciBhPVwiXCI7dGhpcy5nZXRMZW5ndGhIZXhGcm9tVmFsdWU9ZnVuY3Rpb24oKXtpZih0eXBlb2YgdGhpcy5oVj09XCJ1bmRlZmluZWRcInx8dGhpcy5oVj09bnVsbCl7dGhyb3dcInRoaXMuaFYgaXMgbnVsbCBvciB1bmRlZmluZWQuXCJ9aWYodGhpcy5oVi5sZW5ndGglMj09MSl7dGhyb3dcInZhbHVlIGhleCBtdXN0IGJlIGV2ZW4gbGVuZ3RoOiBuPVwiK2EubGVuZ3RoK1wiLHY9XCIrdGhpcy5oVn12YXIgaT10aGlzLmhWLmxlbmd0aC8yO3ZhciBoPWkudG9TdHJpbmcoMTYpO2lmKGgubGVuZ3RoJTI9PTEpe2g9XCIwXCIraH1pZihpPDEyOCl7cmV0dXJuIGh9ZWxzZXt2YXIgZz1oLmxlbmd0aC8yO2lmKGc+MTUpe3Rocm93XCJBU04uMSBsZW5ndGggdG9vIGxvbmcgdG8gcmVwcmVzZW50IGJ5IDh4OiBuID0gXCIraS50b1N0cmluZygxNil9dmFyIGY9MTI4K2c7cmV0dXJuIGYudG9TdHJpbmcoMTYpK2h9fTt0aGlzLmdldEVuY29kZWRIZXg9ZnVuY3Rpb24oKXtpZih0aGlzLmhUTFY9PW51bGx8fHRoaXMuaXNNb2RpZmllZCl7dGhpcy5oVj10aGlzLmdldEZyZXNoVmFsdWVIZXgoKTt0aGlzLmhMPXRoaXMuZ2V0TGVuZ3RoSGV4RnJvbVZhbHVlKCk7dGhpcy5oVExWPXRoaXMuaFQrdGhpcy5oTCt0aGlzLmhWO3RoaXMuaXNNb2RpZmllZD1mYWxzZX1yZXR1cm4gdGhpcy5oVExWfTt0aGlzLmdldFZhbHVlSGV4PWZ1bmN0aW9uKCl7dGhpcy5nZXRFbmNvZGVkSGV4KCk7cmV0dXJuIHRoaXMuaFZ9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVyblwiXCJ9fTtLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJpbmc9ZnVuY3Rpb24oYyl7S0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt2YXIgYj1udWxsO3ZhciBhPW51bGw7dGhpcy5nZXRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfTt0aGlzLnNldFN0cmluZz1mdW5jdGlvbihkKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLnM9ZDt0aGlzLmhWPXV0Zjh0b2hleCh0aGlzLnMpLnRvTG93ZXJDYXNlKCl9O3RoaXMuc2V0U3RyaW5nSGV4PWZ1bmN0aW9uKGQpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMucz1udWxsO3RoaXMuaFY9ZH07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaFZ9O2lmKHR5cGVvZiBjIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYz09XCJzdHJpbmdcIil7dGhpcy5zZXRTdHJpbmcoYyl9ZWxzZXtpZih0eXBlb2YgYy5zdHIhPVwidW5kZWZpbmVkXCIpe3RoaXMuc2V0U3RyaW5nKGMuc3RyKX1lbHNle2lmKHR5cGVvZiBjLmhleCE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRTdHJpbmdIZXgoYy5oZXgpfX19fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVSQWJzdHJhY3RUaW1lPWZ1bmN0aW9uKGMpe0tKVVIuYXNuMS5ERVJBYnN0cmFjdFRpbWUuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3ZhciBiPW51bGw7dmFyIGE9bnVsbDt0aGlzLmxvY2FsRGF0ZVRvVVRDPWZ1bmN0aW9uKGYpe3V0Yz1mLmdldFRpbWUoKSsoZi5nZXRUaW1lem9uZU9mZnNldCgpKjYwMDAwKTt2YXIgZT1uZXcgRGF0ZSh1dGMpO3JldHVybiBlfTt0aGlzLmZvcm1hdERhdGU9ZnVuY3Rpb24obSxvLGUpe3ZhciBnPXRoaXMuemVyb1BhZGRpbmc7dmFyIG49dGhpcy5sb2NhbERhdGVUb1VUQyhtKTt2YXIgcD1TdHJpbmcobi5nZXRGdWxsWWVhcigpKTtpZihvPT1cInV0Y1wiKXtwPXAuc3Vic3RyKDIsMil9dmFyIGw9ZyhTdHJpbmcobi5nZXRNb250aCgpKzEpLDIpO3ZhciBxPWcoU3RyaW5nKG4uZ2V0RGF0ZSgpKSwyKTt2YXIgaD1nKFN0cmluZyhuLmdldEhvdXJzKCkpLDIpO3ZhciBpPWcoU3RyaW5nKG4uZ2V0TWludXRlcygpKSwyKTt2YXIgaj1nKFN0cmluZyhuLmdldFNlY29uZHMoKSksMik7dmFyIHI9cCtsK3EraCtpK2o7aWYoZT09PXRydWUpe3ZhciBmPW4uZ2V0TWlsbGlzZWNvbmRzKCk7aWYoZiE9MCl7dmFyIGs9ZyhTdHJpbmcoZiksMyk7az1rLnJlcGxhY2UoL1swXSskLyxcIlwiKTtyPXIrXCIuXCIra319cmV0dXJuIHIrXCJaXCJ9O3RoaXMuemVyb1BhZGRpbmc9ZnVuY3Rpb24oZSxkKXtpZihlLmxlbmd0aD49ZCl7cmV0dXJuIGV9cmV0dXJuIG5ldyBBcnJheShkLWUubGVuZ3RoKzEpLmpvaW4oXCIwXCIpK2V9O3RoaXMuZ2V0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc307dGhpcy5zZXRTdHJpbmc9ZnVuY3Rpb24oZCl7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5zPWQ7dGhpcy5oVj1zdG9oZXgoZCl9O3RoaXMuc2V0QnlEYXRlVmFsdWU9ZnVuY3Rpb24oaCxqLGUsZCxmLGcpe3ZhciBpPW5ldyBEYXRlKERhdGUuVVRDKGgsai0xLGUsZCxmLGcsMCkpO3RoaXMuc2V0QnlEYXRlKGkpfTt0aGlzLmdldEZyZXNoVmFsdWVIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oVn19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJBYnN0cmFjdFRpbWUsS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cnVjdHVyZWQ9ZnVuY3Rpb24oYil7S0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt2YXIgYT1udWxsO3RoaXMuc2V0QnlBU04xT2JqZWN0QXJyYXk9ZnVuY3Rpb24oYyl7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5hc24xQXJyYXk9Y307dGhpcy5hcHBlbmRBU04xT2JqZWN0PWZ1bmN0aW9uKGMpe3RoaXMuaFRMVj1udWxsO3RoaXMuaXNNb2RpZmllZD10cnVlO3RoaXMuYXNuMUFycmF5LnB1c2goYyl9O3RoaXMuYXNuMUFycmF5PW5ldyBBcnJheSgpO2lmKHR5cGVvZiBiIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYi5hcnJheSE9XCJ1bmRlZmluZWRcIil7dGhpcy5hc24xQXJyYXk9Yi5hcnJheX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJ1Y3R1cmVkLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVSQm9vbGVhbj1mdW5jdGlvbigpe0tKVVIuYXNuMS5ERVJCb29sZWFuLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMDFcIjt0aGlzLmhUTFY9XCIwMTAxZmZcIn07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUkJvb2xlYW4sS0pVUi5hc24xLkFTTjFPYmplY3QpO0tKVVIuYXNuMS5ERVJJbnRlZ2VyPWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJJbnRlZ2VyLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMDJcIjt0aGlzLnNldEJ5QmlnSW50ZWdlcj1mdW5jdGlvbihiKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmhWPUtKVVIuYXNuMS5BU04xVXRpbC5iaWdJbnRUb01pblR3b3NDb21wbGVtZW50c0hleChiKX07dGhpcy5zZXRCeUludGVnZXI9ZnVuY3Rpb24oYyl7dmFyIGI9bmV3IEJpZ0ludGVnZXIoU3RyaW5nKGMpLDEwKTt0aGlzLnNldEJ5QmlnSW50ZWdlcihiKX07dGhpcy5zZXRWYWx1ZUhleD1mdW5jdGlvbihiKXt0aGlzLmhWPWJ9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfTtpZih0eXBlb2YgYSE9XCJ1bmRlZmluZWRcIil7aWYodHlwZW9mIGEuYmlnaW50IT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldEJ5QmlnSW50ZWdlcihhLmJpZ2ludCl9ZWxzZXtpZih0eXBlb2YgYVtcImludFwiXSE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRCeUludGVnZXIoYVtcImludFwiXSl9ZWxzZXtpZih0eXBlb2YgYT09XCJudW1iZXJcIil7dGhpcy5zZXRCeUludGVnZXIoYSl9ZWxzZXtpZih0eXBlb2YgYS5oZXghPVwidW5kZWZpbmVkXCIpe3RoaXMuc2V0VmFsdWVIZXgoYS5oZXgpfX19fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJJbnRlZ2VyLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVSQml0U3RyaW5nPWZ1bmN0aW9uKGIpe2lmKGIhPT11bmRlZmluZWQmJnR5cGVvZiBiLm9iaiE9PVwidW5kZWZpbmVkXCIpe3ZhciBhPUtKVVIuYXNuMS5BU04xVXRpbC5uZXdPYmplY3QoYi5vYmopO2IuaGV4PVwiMDBcIithLmdldEVuY29kZWRIZXgoKX1LSlVSLmFzbjEuREVSQml0U3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMDNcIjt0aGlzLnNldEhleFZhbHVlSW5jbHVkaW5nVW51c2VkQml0cz1mdW5jdGlvbihjKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmhWPWN9O3RoaXMuc2V0VW51c2VkQml0c0FuZEhleFZhbHVlPWZ1bmN0aW9uKGMsZSl7aWYoYzwwfHw3PGMpe3Rocm93XCJ1bnVzZWQgYml0cyBzaGFsbCBiZSBmcm9tIDAgdG8gNzogdSA9IFwiK2N9dmFyIGQ9XCIwXCIrYzt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmhWPWQrZX07dGhpcy5zZXRCeUJpbmFyeVN0cmluZz1mdW5jdGlvbihlKXtlPWUucmVwbGFjZSgvMCskLyxcIlwiKTt2YXIgZj04LWUubGVuZ3RoJTg7aWYoZj09OCl7Zj0wfWZvcih2YXIgZz0wO2c8PWY7ZysrKXtlKz1cIjBcIn12YXIgaj1cIlwiO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGgtMTtnKz04KXt2YXIgZD1lLnN1YnN0cihnLDgpO3ZhciBjPXBhcnNlSW50KGQsMikudG9TdHJpbmcoMTYpO2lmKGMubGVuZ3RoPT0xKXtjPVwiMFwiK2N9ais9Y310aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLmhWPVwiMFwiK2Yran07dGhpcy5zZXRCeUJvb2xlYW5BcnJheT1mdW5jdGlvbihlKXt2YXIgZD1cIlwiO2Zvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXtpZihlW2NdPT10cnVlKXtkKz1cIjFcIn1lbHNle2QrPVwiMFwifX10aGlzLnNldEJ5QmluYXJ5U3RyaW5nKGQpfTt0aGlzLm5ld0ZhbHNlQXJyYXk9ZnVuY3Rpb24oZSl7dmFyIGM9bmV3IEFycmF5KGUpO2Zvcih2YXIgZD0wO2Q8ZTtkKyspe2NbZF09ZmFsc2V9cmV0dXJuIGN9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfTtpZih0eXBlb2YgYiE9XCJ1bmRlZmluZWRcIil7aWYodHlwZW9mIGI9PVwic3RyaW5nXCImJmIudG9Mb3dlckNhc2UoKS5tYXRjaCgvXlswLTlhLWZdKyQvKSl7dGhpcy5zZXRIZXhWYWx1ZUluY2x1ZGluZ1VudXNlZEJpdHMoYil9ZWxzZXtpZih0eXBlb2YgYi5oZXghPVwidW5kZWZpbmVkXCIpe3RoaXMuc2V0SGV4VmFsdWVJbmNsdWRpbmdVbnVzZWRCaXRzKGIuaGV4KX1lbHNle2lmKHR5cGVvZiBiLmJpbiE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRCeUJpbmFyeVN0cmluZyhiLmJpbil9ZWxzZXtpZih0eXBlb2YgYi5hcnJheSE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRCeUJvb2xlYW5BcnJheShiLmFycmF5KX19fX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSQml0U3RyaW5nLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVST2N0ZXRTdHJpbmc9ZnVuY3Rpb24oYil7aWYoYiE9PXVuZGVmaW5lZCYmdHlwZW9mIGIub2JqIT09XCJ1bmRlZmluZWRcIil7dmFyIGE9S0pVUi5hc24xLkFTTjFVdGlsLm5ld09iamVjdChiLm9iaik7Yi5oZXg9YS5nZXRFbmNvZGVkSGV4KCl9S0pVUi5hc24xLkRFUk9jdGV0U3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGIpO3RoaXMuaFQ9XCIwNFwifTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVST2N0ZXRTdHJpbmcsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RyaW5nKTtLSlVSLmFzbjEuREVSTnVsbD1mdW5jdGlvbigpe0tKVVIuYXNuMS5ERVJOdWxsLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzKTt0aGlzLmhUPVwiMDVcIjt0aGlzLmhUTFY9XCIwNTAwXCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJOdWxsLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVST2JqZWN0SWRlbnRpZmllcj1mdW5jdGlvbihjKXt2YXIgYj1mdW5jdGlvbihkKXt2YXIgZT1kLnRvU3RyaW5nKDE2KTtpZihlLmxlbmd0aD09MSl7ZT1cIjBcIitlfXJldHVybiBlfTt2YXIgYT1mdW5jdGlvbihrKXt2YXIgaj1cIlwiO3ZhciBlPW5ldyBCaWdJbnRlZ2VyKGssMTApO3ZhciBkPWUudG9TdHJpbmcoMik7dmFyIGY9Ny1kLmxlbmd0aCU3O2lmKGY9PTcpe2Y9MH12YXIgbT1cIlwiO2Zvcih2YXIgZz0wO2c8ZjtnKyspe20rPVwiMFwifWQ9bStkO2Zvcih2YXIgZz0wO2c8ZC5sZW5ndGgtMTtnKz03KXt2YXIgbD1kLnN1YnN0cihnLDcpO2lmKGchPWQubGVuZ3RoLTcpe2w9XCIxXCIrbH1qKz1iKHBhcnNlSW50KGwsMikpfXJldHVybiBqfTtLSlVSLmFzbjEuREVST2JqZWN0SWRlbnRpZmllci5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dGhpcy5oVD1cIjA2XCI7dGhpcy5zZXRWYWx1ZUhleD1mdW5jdGlvbihkKXt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZTt0aGlzLnM9bnVsbDt0aGlzLmhWPWR9O3RoaXMuc2V0VmFsdWVPaWRTdHJpbmc9ZnVuY3Rpb24oZil7aWYoIWYubWF0Y2goL15bMC05Ll0rJC8pKXt0aHJvd1wibWFsZm9ybWVkIG9pZCBzdHJpbmc6IFwiK2Z9dmFyIGc9XCJcIjt2YXIgZD1mLnNwbGl0KFwiLlwiKTt2YXIgaj1wYXJzZUludChkWzBdKSo0MCtwYXJzZUludChkWzFdKTtnKz1iKGopO2Quc3BsaWNlKDAsMik7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe2crPWEoZFtlXSl9dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5zPW51bGw7dGhpcy5oVj1nfTt0aGlzLnNldFZhbHVlTmFtZT1mdW5jdGlvbihlKXt2YXIgZD1LSlVSLmFzbjEueDUwOS5PSUQubmFtZTJvaWQoZSk7aWYoZCE9PVwiXCIpe3RoaXMuc2V0VmFsdWVPaWRTdHJpbmcoZCl9ZWxzZXt0aHJvd1wiREVST2JqZWN0SWRlbnRpZmllciBvaWROYW1lIHVuZGVmaW5lZDogXCIrZX19O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfTtpZihjIT09dW5kZWZpbmVkKXtpZih0eXBlb2YgYz09PVwic3RyaW5nXCIpe2lmKGMubWF0Y2goL15bMC0yXS5bMC05Ll0rJC8pKXt0aGlzLnNldFZhbHVlT2lkU3RyaW5nKGMpfWVsc2V7dGhpcy5zZXRWYWx1ZU5hbWUoYyl9fWVsc2V7aWYoYy5vaWQhPT11bmRlZmluZWQpe3RoaXMuc2V0VmFsdWVPaWRTdHJpbmcoYy5vaWQpfWVsc2V7aWYoYy5oZXghPT11bmRlZmluZWQpe3RoaXMuc2V0VmFsdWVIZXgoYy5oZXgpfWVsc2V7aWYoYy5uYW1lIT09dW5kZWZpbmVkKXt0aGlzLnNldFZhbHVlTmFtZShjLm5hbWUpfX19fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJPYmplY3RJZGVudGlmaWVyLEtKVVIuYXNuMS5BU04xT2JqZWN0KTtLSlVSLmFzbjEuREVSRW51bWVyYXRlZD1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSRW51bWVyYXRlZC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dGhpcy5oVD1cIjBhXCI7dGhpcy5zZXRCeUJpZ0ludGVnZXI9ZnVuY3Rpb24oYil7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5oVj1LSlVSLmFzbjEuQVNOMVV0aWwuYmlnSW50VG9NaW5Ud29zQ29tcGxlbWVudHNIZXgoYil9O3RoaXMuc2V0QnlJbnRlZ2VyPWZ1bmN0aW9uKGMpe3ZhciBiPW5ldyBCaWdJbnRlZ2VyKFN0cmluZyhjKSwxMCk7dGhpcy5zZXRCeUJpZ0ludGVnZXIoYil9O3RoaXMuc2V0VmFsdWVIZXg9ZnVuY3Rpb24oYil7dGhpcy5oVj1ifTt0aGlzLmdldEZyZXNoVmFsdWVIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oVn07aWYodHlwZW9mIGEhPVwidW5kZWZpbmVkXCIpe2lmKHR5cGVvZiBhW1wiaW50XCJdIT1cInVuZGVmaW5lZFwiKXt0aGlzLnNldEJ5SW50ZWdlcihhW1wiaW50XCJdKX1lbHNle2lmKHR5cGVvZiBhPT1cIm51bWJlclwiKXt0aGlzLnNldEJ5SW50ZWdlcihhKX1lbHNle2lmKHR5cGVvZiBhLmhleCE9XCJ1bmRlZmluZWRcIil7dGhpcy5zZXRWYWx1ZUhleChhLmhleCl9fX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSRW51bWVyYXRlZCxLSlVSLmFzbjEuQVNOMU9iamVjdCk7S0pVUi5hc24xLkRFUlVURjhTdHJpbmc9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUlVURjhTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjBjXCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJVVEY4U3RyaW5nLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZyk7S0pVUi5hc24xLkRFUk51bWVyaWNTdHJpbmc9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUk51bWVyaWNTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjEyXCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJOdW1lcmljU3RyaW5nLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZyk7S0pVUi5hc24xLkRFUlByaW50YWJsZVN0cmluZz1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSUHJpbnRhYmxlU3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpO3RoaXMuaFQ9XCIxM1wifTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSUHJpbnRhYmxlU3RyaW5nLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZyk7S0pVUi5hc24xLkRFUlRlbGV0ZXhTdHJpbmc9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUlRlbGV0ZXhTdHJpbmcuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjE0XCJ9O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJUZWxldGV4U3RyaW5nLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZyk7S0pVUi5hc24xLkRFUklBNVN0cmluZz1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSSUE1U3RyaW5nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpO3RoaXMuaFQ9XCIxNlwifTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSSUE1U3RyaW5nLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFN0cmluZyk7S0pVUi5hc24xLkRFUlVUQ1RpbWU9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUlVUQ1RpbWUuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSk7dGhpcy5oVD1cIjE3XCI7dGhpcy5zZXRCeURhdGU9ZnVuY3Rpb24oYil7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5kYXRlPWI7dGhpcy5zPXRoaXMuZm9ybWF0RGF0ZSh0aGlzLmRhdGUsXCJ1dGNcIik7dGhpcy5oVj1zdG9oZXgodGhpcy5zKX07dGhpcy5nZXRGcmVzaFZhbHVlSGV4PWZ1bmN0aW9uKCl7aWYodHlwZW9mIHRoaXMuZGF0ZT09XCJ1bmRlZmluZWRcIiYmdHlwZW9mIHRoaXMucz09XCJ1bmRlZmluZWRcIil7dGhpcy5kYXRlPW5ldyBEYXRlKCk7dGhpcy5zPXRoaXMuZm9ybWF0RGF0ZSh0aGlzLmRhdGUsXCJ1dGNcIik7dGhpcy5oVj1zdG9oZXgodGhpcy5zKX1yZXR1cm4gdGhpcy5oVn07aWYoYSE9PXVuZGVmaW5lZCl7aWYoYS5zdHIhPT11bmRlZmluZWQpe3RoaXMuc2V0U3RyaW5nKGEuc3RyKX1lbHNle2lmKHR5cGVvZiBhPT1cInN0cmluZ1wiJiZhLm1hdGNoKC9eWzAtOV17MTJ9WiQvKSl7dGhpcy5zZXRTdHJpbmcoYSl9ZWxzZXtpZihhLmhleCE9PXVuZGVmaW5lZCl7dGhpcy5zZXRTdHJpbmdIZXgoYS5oZXgpfWVsc2V7aWYoYS5kYXRlIT09dW5kZWZpbmVkKXt0aGlzLnNldEJ5RGF0ZShhLmRhdGUpfX19fX19O1lBSE9PLmxhbmcuZXh0ZW5kKEtKVVIuYXNuMS5ERVJVVENUaW1lLEtKVVIuYXNuMS5ERVJBYnN0cmFjdFRpbWUpO0tKVVIuYXNuMS5ERVJHZW5lcmFsaXplZFRpbWU9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUkdlbmVyYWxpemVkVGltZS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt0aGlzLmhUPVwiMThcIjt0aGlzLndpdGhNaWxsaXM9ZmFsc2U7dGhpcy5zZXRCeURhdGU9ZnVuY3Rpb24oYil7dGhpcy5oVExWPW51bGw7dGhpcy5pc01vZGlmaWVkPXRydWU7dGhpcy5kYXRlPWI7dGhpcy5zPXRoaXMuZm9ybWF0RGF0ZSh0aGlzLmRhdGUsXCJnZW5cIix0aGlzLndpdGhNaWxsaXMpO3RoaXMuaFY9c3RvaGV4KHRoaXMucyl9O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe2lmKHRoaXMuZGF0ZT09PXVuZGVmaW5lZCYmdGhpcy5zPT09dW5kZWZpbmVkKXt0aGlzLmRhdGU9bmV3IERhdGUoKTt0aGlzLnM9dGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZSxcImdlblwiLHRoaXMud2l0aE1pbGxpcyk7dGhpcy5oVj1zdG9oZXgodGhpcy5zKX1yZXR1cm4gdGhpcy5oVn07aWYoYSE9PXVuZGVmaW5lZCl7aWYoYS5zdHIhPT11bmRlZmluZWQpe3RoaXMuc2V0U3RyaW5nKGEuc3RyKX1lbHNle2lmKHR5cGVvZiBhPT1cInN0cmluZ1wiJiZhLm1hdGNoKC9eWzAtOV17MTR9WiQvKSl7dGhpcy5zZXRTdHJpbmcoYSl9ZWxzZXtpZihhLmhleCE9PXVuZGVmaW5lZCl7dGhpcy5zZXRTdHJpbmdIZXgoYS5oZXgpfWVsc2V7aWYoYS5kYXRlIT09dW5kZWZpbmVkKXt0aGlzLnNldEJ5RGF0ZShhLmRhdGUpfX19fWlmKGEubWlsbGlzPT09dHJ1ZSl7dGhpcy53aXRoTWlsbGlzPXRydWV9fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUkdlbmVyYWxpemVkVGltZSxLSlVSLmFzbjEuREVSQWJzdHJhY3RUaW1lKTtLSlVSLmFzbjEuREVSU2VxdWVuY2U9ZnVuY3Rpb24oYSl7S0pVUi5hc24xLkRFUlNlcXVlbmNlLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpO3RoaXMuaFQ9XCIzMFwiO3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3ZhciBjPVwiXCI7Zm9yKHZhciBiPTA7Yjx0aGlzLmFzbjFBcnJheS5sZW5ndGg7YisrKXt2YXIgZD10aGlzLmFzbjFBcnJheVtiXTtjKz1kLmdldEVuY29kZWRIZXgoKX10aGlzLmhWPWM7cmV0dXJuIHRoaXMuaFZ9fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSU2VxdWVuY2UsS0pVUi5hc24xLkRFUkFic3RyYWN0U3RydWN0dXJlZCk7S0pVUi5hc24xLkRFUlNldD1mdW5jdGlvbihhKXtLSlVSLmFzbjEuREVSU2V0LnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEpO3RoaXMuaFQ9XCIzMVwiO3RoaXMuc29ydEZsYWc9dHJ1ZTt0aGlzLmdldEZyZXNoVmFsdWVIZXg9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgQXJyYXkoKTtmb3IodmFyIGM9MDtjPHRoaXMuYXNuMUFycmF5Lmxlbmd0aDtjKyspe3ZhciBkPXRoaXMuYXNuMUFycmF5W2NdO2IucHVzaChkLmdldEVuY29kZWRIZXgoKSl9aWYodGhpcy5zb3J0RmxhZz09dHJ1ZSl7Yi5zb3J0KCl9dGhpcy5oVj1iLmpvaW4oXCJcIik7cmV0dXJuIHRoaXMuaFZ9O2lmKHR5cGVvZiBhIT1cInVuZGVmaW5lZFwiKXtpZih0eXBlb2YgYS5zb3J0ZmxhZyE9XCJ1bmRlZmluZWRcIiYmYS5zb3J0ZmxhZz09ZmFsc2Upe3RoaXMuc29ydEZsYWc9ZmFsc2V9fX07WUFIT08ubGFuZy5leHRlbmQoS0pVUi5hc24xLkRFUlNldCxLSlVSLmFzbjEuREVSQWJzdHJhY3RTdHJ1Y3R1cmVkKTtLSlVSLmFzbjEuREVSVGFnZ2VkT2JqZWN0PWZ1bmN0aW9uKGEpe0tKVVIuYXNuMS5ERVJUYWdnZWRPYmplY3Quc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO3RoaXMuaFQ9XCJhMFwiO3RoaXMuaFY9XCJcIjt0aGlzLmlzRXhwbGljaXQ9dHJ1ZTt0aGlzLmFzbjFPYmplY3Q9bnVsbDt0aGlzLnNldEFTTjFPYmplY3Q9ZnVuY3Rpb24oYixjLGQpe3RoaXMuaFQ9Yzt0aGlzLmlzRXhwbGljaXQ9Yjt0aGlzLmFzbjFPYmplY3Q9ZDtpZih0aGlzLmlzRXhwbGljaXQpe3RoaXMuaFY9dGhpcy5hc24xT2JqZWN0LmdldEVuY29kZWRIZXgoKTt0aGlzLmhUTFY9bnVsbDt0aGlzLmlzTW9kaWZpZWQ9dHJ1ZX1lbHNle3RoaXMuaFY9bnVsbDt0aGlzLmhUTFY9ZC5nZXRFbmNvZGVkSGV4KCk7dGhpcy5oVExWPXRoaXMuaFRMVi5yZXBsYWNlKC9eLi4vLGMpO3RoaXMuaXNNb2RpZmllZD1mYWxzZX19O3RoaXMuZ2V0RnJlc2hWYWx1ZUhleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhWfTtpZih0eXBlb2YgYSE9XCJ1bmRlZmluZWRcIil7aWYodHlwZW9mIGEudGFnIT1cInVuZGVmaW5lZFwiKXt0aGlzLmhUPWEudGFnfWlmKHR5cGVvZiBhLmV4cGxpY2l0IT1cInVuZGVmaW5lZFwiKXt0aGlzLmlzRXhwbGljaXQ9YS5leHBsaWNpdH1pZih0eXBlb2YgYS5vYmohPVwidW5kZWZpbmVkXCIpe3RoaXMuYXNuMU9iamVjdD1hLm9iajt0aGlzLnNldEFTTjFPYmplY3QodGhpcy5pc0V4cGxpY2l0LHRoaXMuaFQsdGhpcy5hc24xT2JqZWN0KX19fTtZQUhPTy5sYW5nLmV4dGVuZChLSlVSLmFzbjEuREVSVGFnZ2VkT2JqZWN0LEtKVVIuYXNuMS5BU04xT2JqZWN0KTtcbnZhciBBU04xSEVYPW5ldyBmdW5jdGlvbigpe307QVNOMUhFWC5nZXRMYmxlbj1mdW5jdGlvbihjLGEpe2lmKGMuc3Vic3RyKGErMiwxKSE9XCI4XCIpe3JldHVybiAxfXZhciBiPXBhcnNlSW50KGMuc3Vic3RyKGErMywxKSk7aWYoYj09MCl7cmV0dXJuIC0xfWlmKDA8YiYmYjwxMCl7cmV0dXJuIGIrMX1yZXR1cm4gLTJ9O0FTTjFIRVguZ2V0TD1mdW5jdGlvbihjLGIpe3ZhciBhPUFTTjFIRVguZ2V0TGJsZW4oYyxiKTtpZihhPDEpe3JldHVyblwiXCJ9cmV0dXJuIGMuc3Vic3RyKGIrMixhKjIpfTtBU04xSEVYLmdldFZibGVuPWZ1bmN0aW9uKGQsYSl7dmFyIGMsYjtjPUFTTjFIRVguZ2V0TChkLGEpO2lmKGM9PVwiXCIpe3JldHVybiAtMX1pZihjLnN1YnN0cigwLDEpPT09XCI4XCIpe2I9bmV3IEJpZ0ludGVnZXIoYy5zdWJzdHIoMiksMTYpfWVsc2V7Yj1uZXcgQmlnSW50ZWdlcihjLDE2KX1yZXR1cm4gYi5pbnRWYWx1ZSgpfTtBU04xSEVYLmdldFZpZHg9ZnVuY3Rpb24oYyxiKXt2YXIgYT1BU04xSEVYLmdldExibGVuKGMsYik7aWYoYTwwKXtyZXR1cm4gYX1yZXR1cm4gYisoYSsxKSoyfTtBU04xSEVYLmdldFY9ZnVuY3Rpb24oZCxhKXt2YXIgYz1BU04xSEVYLmdldFZpZHgoZCxhKTt2YXIgYj1BU04xSEVYLmdldFZibGVuKGQsYSk7cmV0dXJuIGQuc3Vic3RyKGMsYioyKX07QVNOMUhFWC5nZXRUTFY9ZnVuY3Rpb24oYixhKXtyZXR1cm4gYi5zdWJzdHIoYSwyKStBU04xSEVYLmdldEwoYixhKStBU04xSEVYLmdldFYoYixhKX07QVNOMUhFWC5nZXROZXh0U2libGluZ0lkeD1mdW5jdGlvbihkLGEpe3ZhciBjPUFTTjFIRVguZ2V0VmlkeChkLGEpO3ZhciBiPUFTTjFIRVguZ2V0VmJsZW4oZCxhKTtyZXR1cm4gYytiKjJ9O0FTTjFIRVguZ2V0Q2hpbGRJZHg9ZnVuY3Rpb24oZSxmKXt2YXIgaj1BU04xSEVYO3ZhciBnPW5ldyBBcnJheSgpO3ZhciBpPWouZ2V0VmlkeChlLGYpO2lmKGUuc3Vic3RyKGYsMik9PVwiMDNcIil7Zy5wdXNoKGkrMil9ZWxzZXtnLnB1c2goaSl9dmFyIGw9ai5nZXRWYmxlbihlLGYpO3ZhciBjPWk7dmFyIGQ9MDt3aGlsZSgxKXt2YXIgYj1qLmdldE5leHRTaWJsaW5nSWR4KGUsYyk7aWYoYj09bnVsbHx8KGItaT49KGwqMikpKXticmVha31pZihkPj0yMDApe2JyZWFrfWcucHVzaChiKTtjPWI7ZCsrfXJldHVybiBnfTtBU04xSEVYLmdldE50aENoaWxkSWR4PWZ1bmN0aW9uKGQsYixlKXt2YXIgYz1BU04xSEVYLmdldENoaWxkSWR4KGQsYik7cmV0dXJuIGNbZV19O0FTTjFIRVguZ2V0SWR4YnlMaXN0PWZ1bmN0aW9uKGUsZCxjLGkpe3ZhciBnPUFTTjFIRVg7dmFyIGYsYjtpZihjLmxlbmd0aD09MCl7aWYoaSE9PXVuZGVmaW5lZCl7aWYoZS5zdWJzdHIoZCwyKSE9PWkpe3Rocm93XCJjaGVja2luZyB0YWcgZG9lc24ndCBtYXRjaDogXCIrZS5zdWJzdHIoZCwyKStcIiE9XCIraX19cmV0dXJuIGR9Zj1jLnNoaWZ0KCk7Yj1nLmdldENoaWxkSWR4KGUsZCk7cmV0dXJuIGcuZ2V0SWR4YnlMaXN0KGUsYltmXSxjLGkpfTtBU04xSEVYLmdldFRMVmJ5TGlzdD1mdW5jdGlvbihkLGMsYixmKXt2YXIgZT1BU04xSEVYO3ZhciBhPWUuZ2V0SWR4YnlMaXN0KGQsYyxiKTtpZihhPT09dW5kZWZpbmVkKXt0aHJvd1wiY2FuJ3QgZmluZCBudGhMaXN0IG9iamVjdFwifWlmKGYhPT11bmRlZmluZWQpe2lmKGQuc3Vic3RyKGEsMikhPWYpe3Rocm93XCJjaGVja2luZyB0YWcgZG9lc24ndCBtYXRjaDogXCIrZC5zdWJzdHIoYSwyKStcIiE9XCIrZn19cmV0dXJuIGUuZ2V0VExWKGQsYSl9O0FTTjFIRVguZ2V0VmJ5TGlzdD1mdW5jdGlvbihlLGMsYixnLGkpe3ZhciBmPUFTTjFIRVg7dmFyIGEsZDthPWYuZ2V0SWR4YnlMaXN0KGUsYyxiLGcpO2lmKGE9PT11bmRlZmluZWQpe3Rocm93XCJjYW4ndCBmaW5kIG50aExpc3Qgb2JqZWN0XCJ9ZD1mLmdldFYoZSxhKTtpZihpPT09dHJ1ZSl7ZD1kLnN1YnN0cigyKX1yZXR1cm4gZH07QVNOMUhFWC5oZXh0b29pZHN0cj1mdW5jdGlvbihlKXt2YXIgaD1mdW5jdGlvbihiLGEpe2lmKGIubGVuZ3RoPj1hKXtyZXR1cm4gYn1yZXR1cm4gbmV3IEFycmF5KGEtYi5sZW5ndGgrMSkuam9pbihcIjBcIikrYn07dmFyIGw9W107dmFyIG89ZS5zdWJzdHIoMCwyKTt2YXIgZj1wYXJzZUludChvLDE2KTtsWzBdPW5ldyBTdHJpbmcoTWF0aC5mbG9vcihmLzQwKSk7bFsxXT1uZXcgU3RyaW5nKGYlNDApO3ZhciBtPWUuc3Vic3RyKDIpO3ZhciBrPVtdO2Zvcih2YXIgZz0wO2c8bS5sZW5ndGgvMjtnKyspe2sucHVzaChwYXJzZUludChtLnN1YnN0cihnKjIsMiksMTYpKX12YXIgaj1bXTt2YXIgZD1cIlwiO2Zvcih2YXIgZz0wO2c8ay5sZW5ndGg7ZysrKXtpZihrW2ddJjEyOCl7ZD1kK2goKGtbZ10mMTI3KS50b1N0cmluZygyKSw3KX1lbHNle2Q9ZCtoKChrW2ddJjEyNykudG9TdHJpbmcoMiksNyk7ai5wdXNoKG5ldyBTdHJpbmcocGFyc2VJbnQoZCwyKSkpO2Q9XCJcIn19dmFyIG49bC5qb2luKFwiLlwiKTtpZihqLmxlbmd0aD4wKXtuPW4rXCIuXCIrai5qb2luKFwiLlwiKX1yZXR1cm4gbn07QVNOMUhFWC5kdW1wPWZ1bmN0aW9uKHQsYyxsLGcpe3ZhciBwPUFTTjFIRVg7dmFyIGo9cC5nZXRWO3ZhciB5PXAuZHVtcDt2YXIgdz1wLmdldENoaWxkSWR4O3ZhciBlPXQ7aWYodCBpbnN0YW5jZW9mIEtKVVIuYXNuMS5BU04xT2JqZWN0KXtlPXQuZ2V0RW5jb2RlZEhleCgpfXZhciBxPWZ1bmN0aW9uKEEsaSl7aWYoQS5sZW5ndGg8PWkqMil7cmV0dXJuIEF9ZWxzZXt2YXIgdj1BLnN1YnN0cigwLGkpK1wiLi4odG90YWwgXCIrQS5sZW5ndGgvMitcImJ5dGVzKS4uXCIrQS5zdWJzdHIoQS5sZW5ndGgtaSxpKTtyZXR1cm4gdn19O2lmKGM9PT11bmRlZmluZWQpe2M9e29tbWl0X2xvbmdfb2N0ZXQ6MzJ9fWlmKGw9PT11bmRlZmluZWQpe2w9MH1pZihnPT09dW5kZWZpbmVkKXtnPVwiXCJ9dmFyIHg9Yy5vbW1pdF9sb25nX29jdGV0O2lmKGUuc3Vic3RyKGwsMik9PVwiMDFcIil7dmFyIGg9aihlLGwpO2lmKGg9PVwiMDBcIil7cmV0dXJuIGcrXCJCT09MRUFOIEZBTFNFXFxuXCJ9ZWxzZXtyZXR1cm4gZytcIkJPT0xFQU4gVFJVRVxcblwifX1pZihlLnN1YnN0cihsLDIpPT1cIjAyXCIpe3ZhciBoPWooZSxsKTtyZXR1cm4gZytcIklOVEVHRVIgXCIrcShoLHgpK1wiXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIwM1wiKXt2YXIgaD1qKGUsbCk7cmV0dXJuIGcrXCJCSVRTVFJJTkcgXCIrcShoLHgpK1wiXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIwNFwiKXt2YXIgaD1qKGUsbCk7aWYocC5pc0FTTjFIRVgoaCkpe3ZhciBrPWcrXCJPQ1RFVFNUUklORywgZW5jYXBzdWxhdGVzXFxuXCI7az1rK3koaCxjLDAsZytcIiAgXCIpO3JldHVybiBrfWVsc2V7cmV0dXJuIGcrXCJPQ1RFVFNUUklORyBcIitxKGgseCkrXCJcXG5cIn19aWYoZS5zdWJzdHIobCwyKT09XCIwNVwiKXtyZXR1cm4gZytcIk5VTExcXG5cIn1pZihlLnN1YnN0cihsLDIpPT1cIjA2XCIpe3ZhciBtPWooZSxsKTt2YXIgYT1LSlVSLmFzbjEuQVNOMVV0aWwub2lkSGV4VG9JbnQobSk7dmFyIG89S0pVUi5hc24xLng1MDkuT0lELm9pZDJuYW1lKGEpO3ZhciBiPWEucmVwbGFjZSgvXFwuL2csXCIgXCIpO2lmKG8hPVwiXCIpe3JldHVybiBnK1wiT2JqZWN0SWRlbnRpZmllciBcIitvK1wiIChcIitiK1wiKVxcblwifWVsc2V7cmV0dXJuIGcrXCJPYmplY3RJZGVudGlmaWVyIChcIitiK1wiKVxcblwifX1pZihlLnN1YnN0cihsLDIpPT1cIjBjXCIpe3JldHVybiBnK1wiVVRGOFN0cmluZyAnXCIraGV4dG91dGY4KGooZSxsKSkrXCInXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIxM1wiKXtyZXR1cm4gZytcIlByaW50YWJsZVN0cmluZyAnXCIraGV4dG91dGY4KGooZSxsKSkrXCInXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIxNFwiKXtyZXR1cm4gZytcIlRlbGV0ZXhTdHJpbmcgJ1wiK2hleHRvdXRmOChqKGUsbCkpK1wiJ1xcblwifWlmKGUuc3Vic3RyKGwsMik9PVwiMTZcIil7cmV0dXJuIGcrXCJJQTVTdHJpbmcgJ1wiK2hleHRvdXRmOChqKGUsbCkpK1wiJ1xcblwifWlmKGUuc3Vic3RyKGwsMik9PVwiMTdcIil7cmV0dXJuIGcrXCJVVENUaW1lIFwiK2hleHRvdXRmOChqKGUsbCkpK1wiXFxuXCJ9aWYoZS5zdWJzdHIobCwyKT09XCIxOFwiKXtyZXR1cm4gZytcIkdlbmVyYWxpemVkVGltZSBcIitoZXh0b3V0ZjgoaihlLGwpKStcIlxcblwifWlmKGUuc3Vic3RyKGwsMik9PVwiMzBcIil7aWYoZS5zdWJzdHIobCw0KT09XCIzMDAwXCIpe3JldHVybiBnK1wiU0VRVUVOQ0Uge31cXG5cIn12YXIgaz1nK1wiU0VRVUVOQ0VcXG5cIjt2YXIgZD13KGUsbCk7dmFyIGY9YztpZigoZC5sZW5ndGg9PTJ8fGQubGVuZ3RoPT0zKSYmZS5zdWJzdHIoZFswXSwyKT09XCIwNlwiJiZlLnN1YnN0cihkW2QubGVuZ3RoLTFdLDIpPT1cIjA0XCIpe3ZhciBvPXAub2lkbmFtZShqKGUsZFswXSkpO3ZhciByPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYykpO3IueDUwOUV4dE5hbWU9bztmPXJ9Zm9yKHZhciB1PTA7dTxkLmxlbmd0aDt1Kyspe2s9ayt5KGUsZixkW3VdLGcrXCIgIFwiKX1yZXR1cm4ga31pZihlLnN1YnN0cihsLDIpPT1cIjMxXCIpe3ZhciBrPWcrXCJTRVRcXG5cIjt2YXIgZD13KGUsbCk7Zm9yKHZhciB1PTA7dTxkLmxlbmd0aDt1Kyspe2s9ayt5KGUsYyxkW3VdLGcrXCIgIFwiKX1yZXR1cm4ga312YXIgej1wYXJzZUludChlLnN1YnN0cihsLDIpLDE2KTtpZigoeiYxMjgpIT0wKXt2YXIgbj16JjMxO2lmKCh6JjMyKSE9MCl7dmFyIGs9ZytcIltcIituK1wiXVxcblwiO3ZhciBkPXcoZSxsKTtmb3IodmFyIHU9MDt1PGQubGVuZ3RoO3UrKyl7az1rK3koZSxjLGRbdV0sZytcIiAgXCIpfXJldHVybiBrfWVsc2V7dmFyIGg9aihlLGwpO2lmKGguc3Vic3RyKDAsOCk9PVwiNjg3NDc0NzBcIil7aD1oZXh0b3V0ZjgoaCl9aWYoYy54NTA5RXh0TmFtZT09PVwic3ViamVjdEFsdE5hbWVcIiYmbj09Mil7aD1oZXh0b3V0ZjgoaCl9dmFyIGs9ZytcIltcIituK1wiXSBcIitoK1wiXFxuXCI7cmV0dXJuIGt9fXJldHVybiBnK1wiVU5LTk9XTihcIitlLnN1YnN0cihsLDIpK1wiKSBcIitqKGUsbCkrXCJcXG5cIn07QVNOMUhFWC5pc0FTTjFIRVg9ZnVuY3Rpb24oZSl7dmFyIGQ9QVNOMUhFWDtpZihlLmxlbmd0aCUyPT0xKXtyZXR1cm4gZmFsc2V9dmFyIGM9ZC5nZXRWYmxlbihlLDApO3ZhciBiPWUuc3Vic3RyKDAsMik7dmFyIGY9ZC5nZXRMKGUsMCk7dmFyIGE9ZS5sZW5ndGgtYi5sZW5ndGgtZi5sZW5ndGg7aWYoYT09YyoyKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O0FTTjFIRVgub2lkbmFtZT1mdW5jdGlvbihhKXt2YXIgYz1LSlVSLmFzbjE7aWYoS0pVUi5sYW5nLlN0cmluZy5pc0hleChhKSl7YT1jLkFTTjFVdGlsLm9pZEhleFRvSW50KGEpfXZhciBiPWMueDUwOS5PSUQub2lkMm5hbWUoYSk7aWYoYj09PVwiXCIpe2I9YX1yZXR1cm4gYn07XG52YXIgS0pVUjtpZih0eXBlb2YgS0pVUj09XCJ1bmRlZmluZWRcInx8IUtKVVIpe0tKVVI9e319aWYodHlwZW9mIEtKVVIubGFuZz09XCJ1bmRlZmluZWRcInx8IUtKVVIubGFuZyl7S0pVUi5sYW5nPXt9fUtKVVIubGFuZy5TdHJpbmc9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIEJhc2U2NHgoKXt9ZnVuY3Rpb24gc3RvQkEoZCl7dmFyIGI9bmV3IEFycmF5KCk7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspe2JbY109ZC5jaGFyQ29kZUF0KGMpfXJldHVybiBifWZ1bmN0aW9uIEJBdG9zKGIpe3ZhciBkPVwiXCI7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe2Q9ZCtTdHJpbmcuZnJvbUNoYXJDb2RlKGJbY10pfXJldHVybiBkfWZ1bmN0aW9uIEJBdG9oZXgoYil7dmFyIGU9XCJcIjtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGM9YltkXS50b1N0cmluZygxNik7aWYoYy5sZW5ndGg9PTEpe2M9XCIwXCIrY31lPWUrY31yZXR1cm4gZX1mdW5jdGlvbiBzdG9oZXgoYSl7cmV0dXJuIEJBdG9oZXgoc3RvQkEoYSkpfWZ1bmN0aW9uIHN0b2I2NChhKXtyZXR1cm4gaGV4MmI2NChzdG9oZXgoYSkpfWZ1bmN0aW9uIHN0b2I2NHUoYSl7cmV0dXJuIGI2NHRvYjY0dShoZXgyYjY0KHN0b2hleChhKSkpfWZ1bmN0aW9uIGI2NHV0b3MoYSl7cmV0dXJuIEJBdG9zKGI2NHRvQkEoYjY0dXRvYjY0KGEpKSl9ZnVuY3Rpb24gYjY0dG9iNjR1KGEpe2E9YS5yZXBsYWNlKC9cXD0vZyxcIlwiKTthPWEucmVwbGFjZSgvXFwrL2csXCItXCIpO2E9YS5yZXBsYWNlKC9cXC8vZyxcIl9cIik7cmV0dXJuIGF9ZnVuY3Rpb24gYjY0dXRvYjY0KGEpe2lmKGEubGVuZ3RoJTQ9PTIpe2E9YStcIj09XCJ9ZWxzZXtpZihhLmxlbmd0aCU0PT0zKXthPWErXCI9XCJ9fWE9YS5yZXBsYWNlKC8tL2csXCIrXCIpO2E9YS5yZXBsYWNlKC9fL2csXCIvXCIpO3JldHVybiBhfWZ1bmN0aW9uIGhleHRvYjY0dShhKXtpZihhLmxlbmd0aCUyPT0xKXthPVwiMFwiK2F9cmV0dXJuIGI2NHRvYjY0dShoZXgyYjY0KGEpKX1mdW5jdGlvbiBiNjR1dG9oZXgoYSl7cmV0dXJuIGI2NHRvaGV4KGI2NHV0b2I2NChhKSl9dmFyIHV0Zjh0b2I2NHUsYjY0dXRvdXRmODtpZih0eXBlb2YgQnVmZmVyPT09XCJmdW5jdGlvblwiKXt1dGY4dG9iNjR1PWZ1bmN0aW9uKGEpe3JldHVybiBiNjR0b2I2NHUobmV3IEJ1ZmZlcihhLFwidXRmOFwiKS50b1N0cmluZyhcImJhc2U2NFwiKSl9O2I2NHV0b3V0Zjg9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCdWZmZXIoYjY0dXRvYjY0KGEpLFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmOFwiKX19ZWxzZXt1dGY4dG9iNjR1PWZ1bmN0aW9uKGEpe3JldHVybiBoZXh0b2I2NHUodXJpY21wdG9oZXgoZW5jb2RlVVJJQ29tcG9uZW50QWxsKGEpKSl9O2I2NHV0b3V0Zjg9ZnVuY3Rpb24oYSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChoZXh0b3VyaWNtcChiNjR1dG9oZXgoYSkpKX19ZnVuY3Rpb24gdXRmOHRvYjY0KGEpe3JldHVybiBoZXgyYjY0KHVyaWNtcHRvaGV4KGVuY29kZVVSSUNvbXBvbmVudEFsbChhKSkpfWZ1bmN0aW9uIGI2NHRvdXRmOChhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGhleHRvdXJpY21wKGI2NHRvaGV4KGEpKSl9ZnVuY3Rpb24gdXRmOHRvaGV4KGEpe3JldHVybiB1cmljbXB0b2hleChlbmNvZGVVUklDb21wb25lbnRBbGwoYSkpfWZ1bmN0aW9uIGhleHRvdXRmOChhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGhleHRvdXJpY21wKGEpKX1mdW5jdGlvbiBoZXh0b3JzdHIoYyl7dmFyIGI9XCJcIjtmb3IodmFyIGE9MDthPGMubGVuZ3RoLTE7YSs9Mil7Yis9U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjLnN1YnN0cihhLDIpLDE2KSl9cmV0dXJuIGJ9ZnVuY3Rpb24gcnN0cnRvaGV4KGMpe3ZhciBhPVwiXCI7Zm9yKHZhciBiPTA7YjxjLmxlbmd0aDtiKyspe2ErPShcIjBcIitjLmNoYXJDb2RlQXQoYikudG9TdHJpbmcoMTYpKS5zbGljZSgtMil9cmV0dXJuIGF9ZnVuY3Rpb24gaGV4dG9iNjQoYSl7cmV0dXJuIGhleDJiNjQoYSl9ZnVuY3Rpb24gaGV4dG9iNjRubChiKXt2YXIgYT1oZXh0b2I2NChiKTt2YXIgYz1hLnJlcGxhY2UoLyguezY0fSkvZyxcIiQxXFxyXFxuXCIpO2M9Yy5yZXBsYWNlKC9cXHJcXG4kLyxcIlwiKTtyZXR1cm4gY31mdW5jdGlvbiBiNjRubHRvaGV4KGIpe3ZhciBhPWIucmVwbGFjZSgvW14wLTlBLVphLXpcXC8rPV0qL2csXCJcIik7dmFyIGM9YjY0dG9oZXgoYSk7cmV0dXJuIGN9ZnVuY3Rpb24gaGV4dG9wZW0oYSxiKXt2YXIgYz1oZXh0b2I2NG5sKGEpO3JldHVyblwiLS0tLS1CRUdJTiBcIitiK1wiLS0tLS1cXHJcXG5cIitjK1wiXFxyXFxuLS0tLS1FTkQgXCIrYitcIi0tLS0tXFxyXFxuXCJ9ZnVuY3Rpb24gcGVtdG9oZXgoYSxiKXtpZihhLmluZGV4T2YoXCItLS0tLUJFR0lOIFwiKT09LTEpe3Rocm93XCJjYW4ndCBmaW5kIFBFTSBoZWFkZXI6IFwiK2J9aWYoYiE9PXVuZGVmaW5lZCl7YT1hLnJlcGxhY2UoXCItLS0tLUJFR0lOIFwiK2IrXCItLS0tLVwiLFwiXCIpO2E9YS5yZXBsYWNlKFwiLS0tLS1FTkQgXCIrYitcIi0tLS0tXCIsXCJcIil9ZWxzZXthPWEucmVwbGFjZSgvLS0tLS1CRUdJTiBbXi1dKy0tLS0tLyxcIlwiKTthPWEucmVwbGFjZSgvLS0tLS1FTkQgW14tXSstLS0tLS8sXCJcIil9cmV0dXJuIGI2NG5sdG9oZXgoYSl9ZnVuY3Rpb24gaGV4dG9BcnJheUJ1ZmZlcihkKXtpZihkLmxlbmd0aCUyIT0wKXt0aHJvd1wiaW5wdXQgaXMgbm90IGV2ZW4gbGVuZ3RoXCJ9aWYoZC5tYXRjaCgvXlswLTlBLUZhLWZdKyQvKT09bnVsbCl7dGhyb3dcImlucHV0IGlzIG5vdCBoZXhhZGVjaW1hbFwifXZhciBiPW5ldyBBcnJheUJ1ZmZlcihkLmxlbmd0aC8yKTt2YXIgYT1uZXcgRGF0YVZpZXcoYik7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aC8yO2MrKyl7YS5zZXRVaW50OChjLHBhcnNlSW50KGQuc3Vic3RyKGMqMiwyKSwxNikpfXJldHVybiBifWZ1bmN0aW9uIEFycmF5QnVmZmVydG9oZXgoYil7dmFyIGQ9XCJcIjt2YXIgYT1uZXcgRGF0YVZpZXcoYik7Zm9yKHZhciBjPTA7YzxiLmJ5dGVMZW5ndGg7YysrKXtkKz0oXCIwMFwiK2EuZ2V0VWludDgoYykudG9TdHJpbmcoMTYpKS5zbGljZSgtMil9cmV0dXJuIGR9ZnVuY3Rpb24genVsdXRvbXNlYyhuKXt2YXIgbCxqLG0sZSxmLGksYixrO3ZhciBhLGgsZyxjO2M9bi5tYXRjaCgvXihcXGR7Mn18XFxkezR9KShcXGRcXGQpKFxcZFxcZCkoXFxkXFxkKShcXGRcXGQpKFxcZFxcZCkofFxcLlxcZCspWiQvKTtpZihjKXthPWNbMV07bD1wYXJzZUludChhKTtpZihhLmxlbmd0aD09PTIpe2lmKDUwPD1sJiZsPDEwMCl7bD0xOTAwK2x9ZWxzZXtpZigwPD1sJiZsPDUwKXtsPTIwMDArbH19fWo9cGFyc2VJbnQoY1syXSktMTttPXBhcnNlSW50KGNbM10pO2U9cGFyc2VJbnQoY1s0XSk7Zj1wYXJzZUludChjWzVdKTtpPXBhcnNlSW50KGNbNl0pO2I9MDtoPWNbN107aWYoaCE9PVwiXCIpe2c9KGguc3Vic3RyKDEpK1wiMDBcIikuc3Vic3RyKDAsMyk7Yj1wYXJzZUludChnKX1yZXR1cm4gRGF0ZS5VVEMobCxqLG0sZSxmLGksYil9dGhyb3dcInVuc3VwcG9ydGVkIHp1bHUgZm9ybWF0OiBcIitufWZ1bmN0aW9uIHp1bHV0b3NlYyhhKXt2YXIgYj16dWx1dG9tc2VjKGEpO3JldHVybiB+fihiLzEwMDApfWZ1bmN0aW9uIHp1bHV0b2RhdGUoYSl7cmV0dXJuIG5ldyBEYXRlKHp1bHV0b21zZWMoYSkpfWZ1bmN0aW9uIGRhdGV0b3p1bHUoZyxlLGYpe3ZhciBiO3ZhciBhPWcuZ2V0VVRDRnVsbFllYXIoKTtpZihlKXtpZihhPDE5NTB8fDIwNDk8YSl7dGhyb3dcIm5vdCBwcm9wZXIgeWVhciBmb3IgVVRDVGltZTogXCIrYX1iPShcIlwiK2EpLnNsaWNlKC0yKX1lbHNle2I9KFwiMDAwXCIrYSkuc2xpY2UoLTQpfWIrPShcIjBcIisoZy5nZXRVVENNb250aCgpKzEpKS5zbGljZSgtMik7Yis9KFwiMFwiK2cuZ2V0VVRDRGF0ZSgpKS5zbGljZSgtMik7Yis9KFwiMFwiK2cuZ2V0VVRDSG91cnMoKSkuc2xpY2UoLTIpO2IrPShcIjBcIitnLmdldFVUQ01pbnV0ZXMoKSkuc2xpY2UoLTIpO2IrPShcIjBcIitnLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIpO2lmKGYpe3ZhciBjPWcuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7aWYoYyE9PTApe2M9KFwiMDBcIitjKS5zbGljZSgtMyk7Yz1jLnJlcGxhY2UoLzArJC9nLFwiXCIpO2IrPVwiLlwiK2N9fWIrPVwiWlwiO3JldHVybiBifWZ1bmN0aW9uIHVyaWNtcHRvaGV4KGEpe3JldHVybiBhLnJlcGxhY2UoLyUvZyxcIlwiKX1mdW5jdGlvbiBoZXh0b3VyaWNtcChhKXtyZXR1cm4gYS5yZXBsYWNlKC8oLi4pL2csXCIlJDFcIil9ZnVuY3Rpb24gaXB2NnRvaGV4KGcpe3ZhciBiPVwibWFsZm9ybWVkIElQdjYgYWRkcmVzc1wiO2lmKCFnLm1hdGNoKC9eWzAtOUEtRmEtZjpdKyQvKSl7dGhyb3cgYn1nPWcudG9Mb3dlckNhc2UoKTt2YXIgZD1nLnNwbGl0KFwiOlwiKS5sZW5ndGgtMTtpZihkPDIpe3Rocm93IGJ9dmFyIGU9XCI6XCIucmVwZWF0KDctZCsyKTtnPWcucmVwbGFjZShcIjo6XCIsZSk7dmFyIGM9Zy5zcGxpdChcIjpcIik7aWYoYy5sZW5ndGghPTgpe3Rocm93IGJ9Zm9yKHZhciBmPTA7Zjw4O2YrKyl7Y1tmXT0oXCIwMDAwXCIrY1tmXSkuc2xpY2UoLTQpfXJldHVybiBjLmpvaW4oXCJcIil9ZnVuY3Rpb24gaGV4dG9pcHY2KGUpe2lmKCFlLm1hdGNoKC9eWzAtOUEtRmEtZl17MzJ9JC8pKXt0aHJvd1wibWFsZm9ybWVkIElQdjYgYWRkcmVzcyBvY3RldFwifWU9ZS50b0xvd2VyQ2FzZSgpO3ZhciBiPWUubWF0Y2goLy57MSw0fS9nKTtmb3IodmFyIGQ9MDtkPDg7ZCsrKXtiW2RdPWJbZF0ucmVwbGFjZSgvXjArLyxcIlwiKTtpZihiW2RdPT1cIlwiKXtiW2RdPVwiMFwifX1lPVwiOlwiK2Iuam9pbihcIjpcIikrXCI6XCI7dmFyIGM9ZS5tYXRjaCgvOigwOil7Mix9L2cpO2lmKGM9PT1udWxsKXtyZXR1cm4gZS5zbGljZSgxLC0xKX12YXIgZj1cIlwiO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtpZihjW2RdLmxlbmd0aD5mLmxlbmd0aCl7Zj1jW2RdfX1lPWUucmVwbGFjZShmLFwiOjpcIik7cmV0dXJuIGUuc2xpY2UoMSwtMSl9ZnVuY3Rpb24gaGV4dG9pcChiKXt2YXIgZD1cIm1hbGZvcm1lZCBoZXggdmFsdWVcIjtpZighYi5tYXRjaCgvXihbMC05QS1GYS1mXVswLTlBLUZhLWZdKXsxLH0kLykpe3Rocm93IGR9aWYoYi5sZW5ndGg9PTgpe3ZhciBjO3RyeXtjPXBhcnNlSW50KGIuc3Vic3RyKDAsMiksMTYpK1wiLlwiK3BhcnNlSW50KGIuc3Vic3RyKDIsMiksMTYpK1wiLlwiK3BhcnNlSW50KGIuc3Vic3RyKDQsMiksMTYpK1wiLlwiK3BhcnNlSW50KGIuc3Vic3RyKDYsMiksMTYpO3JldHVybiBjfWNhdGNoKGEpe3Rocm93IGR9fWVsc2V7aWYoYi5sZW5ndGg9PTMyKXtyZXR1cm4gaGV4dG9pcHY2KGIpfWVsc2V7cmV0dXJuIGJ9fX1mdW5jdGlvbiBpcHRvaGV4KGYpe3ZhciBqPVwibWFsZm9ybWVkIElQIGFkZHJlc3NcIjtmPWYudG9Mb3dlckNhc2UoZik7aWYoZi5tYXRjaCgvXlswLTkuXSskLykpe3ZhciBiPWYuc3BsaXQoXCIuXCIpO2lmKGIubGVuZ3RoIT09NCl7dGhyb3cgan12YXIgZz1cIlwiO3RyeXtmb3IodmFyIGU9MDtlPDQ7ZSsrKXt2YXIgaD1wYXJzZUludChiW2VdKTtnKz0oXCIwXCIraC50b1N0cmluZygxNikpLnNsaWNlKC0yKX1yZXR1cm4gZ31jYXRjaChjKXt0aHJvdyBqfX1lbHNle2lmKGYubWF0Y2goL15bMC05YS1mOl0rJC8pJiZmLmluZGV4T2YoXCI6XCIpIT09LTEpe3JldHVybiBpcHY2dG9oZXgoZil9ZWxzZXt0aHJvdyBqfX19ZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50QWxsKGEpe3ZhciBkPWVuY29kZVVSSUNvbXBvbmVudChhKTt2YXIgYj1cIlwiO2Zvcih2YXIgYz0wO2M8ZC5sZW5ndGg7YysrKXtpZihkW2NdPT1cIiVcIil7Yj1iK2Quc3Vic3RyKGMsMyk7Yz1jKzJ9ZWxzZXtiPWIrXCIlXCIrc3RvaGV4KGRbY10pfX1yZXR1cm4gYn1mdW5jdGlvbiBuZXdsaW5lX3RvVW5peChhKXthPWEucmVwbGFjZSgvXFxyXFxuL21nLFwiXFxuXCIpO3JldHVybiBhfWZ1bmN0aW9uIG5ld2xpbmVfdG9Eb3MoYSl7YT1hLnJlcGxhY2UoL1xcclxcbi9tZyxcIlxcblwiKTthPWEucmVwbGFjZSgvXFxuL21nLFwiXFxyXFxuXCIpO3JldHVybiBhfUtKVVIubGFuZy5TdHJpbmcuaXNJbnRlZ2VyPWZ1bmN0aW9uKGEpe2lmKGEubWF0Y2goL15bMC05XSskLykpe3JldHVybiB0cnVlfWVsc2V7aWYoYS5tYXRjaCgvXi1bMC05XSskLykpe3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX19O0tKVVIubGFuZy5TdHJpbmcuaXNIZXg9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGglMj09MCYmKGEubWF0Y2goL15bMC05YS1mXSskLyl8fGEubWF0Y2goL15bMC05QS1GXSskLykpKXtyZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19O0tKVVIubGFuZy5TdHJpbmcuaXNCYXNlNjQ9ZnVuY3Rpb24oYSl7YT1hLnJlcGxhY2UoL1xccysvZyxcIlwiKTtpZihhLm1hdGNoKC9eWzAtOUEtWmEteitcXC9dKz17MCwzfSQvKSYmYS5sZW5ndGglND09MCl7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fTtLSlVSLmxhbmcuU3RyaW5nLmlzQmFzZTY0VVJMPWZ1bmN0aW9uKGEpe2lmKGEubWF0Y2goL1srLz1dLykpe3JldHVybiBmYWxzZX1hPWI2NHV0b2I2NChhKTtyZXR1cm4gS0pVUi5sYW5nLlN0cmluZy5pc0Jhc2U2NChhKX07S0pVUi5sYW5nLlN0cmluZy5pc0ludGVnZXJBcnJheT1mdW5jdGlvbihhKXthPWEucmVwbGFjZSgvXFxzKy9nLFwiXCIpO2lmKGEubWF0Y2goL15cXFtbMC05LF0rXFxdJC8pKXtyZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19O2Z1bmN0aW9uIGhleHRvcG9zaGV4KGEpe2lmKGEubGVuZ3RoJTI9PTEpe3JldHVyblwiMFwiK2F9aWYoYS5zdWJzdHIoMCwxKT5cIjdcIil7cmV0dXJuXCIwMFwiK2F9cmV0dXJuIGF9ZnVuY3Rpb24gaW50YXJ5c3RydG9oZXgoYil7Yj1iLnJlcGxhY2UoL15cXHMqXFxbXFxzKi8sXCJcIik7Yj1iLnJlcGxhY2UoL1xccypcXF1cXHMqJC8sXCJcIik7Yj1iLnJlcGxhY2UoL1xccyovZyxcIlwiKTt0cnl7dmFyIGM9Yi5zcGxpdCgvLC8pLm1hcChmdW5jdGlvbihnLGUsaCl7dmFyIGY9cGFyc2VJbnQoZyk7aWYoZjwwfHwyNTU8Zil7dGhyb3dcImludGVnZXIgbm90IGluIHJhbmdlIDAtMjU1XCJ9dmFyIGQ9KFwiMDBcIitmLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO3JldHVybiBkfSkuam9pbihcIlwiKTtyZXR1cm4gY31jYXRjaChhKXt0aHJvd1wibWFsZm9ybWVkIGludGVnZXIgYXJyYXkgc3RyaW5nOiBcIithfX12YXIgc3RyZGlmZmlkeD1mdW5jdGlvbihjLGEpe3ZhciBkPWMubGVuZ3RoO2lmKGMubGVuZ3RoPmEubGVuZ3RoKXtkPWEubGVuZ3RofWZvcih2YXIgYj0wO2I8ZDtiKyspe2lmKGMuY2hhckNvZGVBdChiKSE9YS5jaGFyQ29kZUF0KGIpKXtyZXR1cm4gYn19aWYoYy5sZW5ndGghPWEubGVuZ3RoKXtyZXR1cm4gZH1yZXR1cm4gLTF9O1xuaWYodHlwZW9mIEtKVVI9PVwidW5kZWZpbmVkXCJ8fCFLSlVSKXtLSlVSPXt9fWlmKHR5cGVvZiBLSlVSLmNyeXB0bz09XCJ1bmRlZmluZWRcInx8IUtKVVIuY3J5cHRvKXtLSlVSLmNyeXB0bz17fX1LSlVSLmNyeXB0by5VdGlsPW5ldyBmdW5jdGlvbigpe3RoaXMuRElHRVNUSU5GT0hFQUQ9e3NoYTE6XCIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTRcIixzaGEyMjQ6XCIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxY1wiLHNoYTI1NjpcIjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwXCIsc2hhMzg0OlwiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzBcIixzaGE1MTI6XCIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MFwiLG1kMjpcIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDIwNTAwMDQxMFwiLG1kNTpcIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMFwiLHJpcGVtZDE2MDpcIjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNFwiLH07dGhpcy5ERUZBVUxUUFJPVklERVI9e21kNTpcImNyeXB0b2pzXCIsc2hhMTpcImNyeXB0b2pzXCIsc2hhMjI0OlwiY3J5cHRvanNcIixzaGEyNTY6XCJjcnlwdG9qc1wiLHNoYTM4NDpcImNyeXB0b2pzXCIsc2hhNTEyOlwiY3J5cHRvanNcIixyaXBlbWQxNjA6XCJjcnlwdG9qc1wiLGhtYWNtZDU6XCJjcnlwdG9qc1wiLGhtYWNzaGExOlwiY3J5cHRvanNcIixobWFjc2hhMjI0OlwiY3J5cHRvanNcIixobWFjc2hhMjU2OlwiY3J5cHRvanNcIixobWFjc2hhMzg0OlwiY3J5cHRvanNcIixobWFjc2hhNTEyOlwiY3J5cHRvanNcIixobWFjcmlwZW1kMTYwOlwiY3J5cHRvanNcIixNRDV3aXRoUlNBOlwiY3J5cHRvanMvanNyc2FcIixTSEExd2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjI0d2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMjU2d2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMzg0d2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBNTEyd2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsUklQRU1EMTYwd2l0aFJTQTpcImNyeXB0b2pzL2pzcnNhXCIsTUQ1d2l0aEVDRFNBOlwiY3J5cHRvanMvanNyc2FcIixTSEExd2l0aEVDRFNBOlwiY3J5cHRvanMvanNyc2FcIixTSEEyMjR3aXRoRUNEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTI1NndpdGhFQ0RTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMzg0d2l0aEVDRFNBOlwiY3J5cHRvanMvanNyc2FcIixTSEE1MTJ3aXRoRUNEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFJJUEVNRDE2MHdpdGhFQ0RTQTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMXdpdGhEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTIyNHdpdGhEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTI1NndpdGhEU0E6XCJjcnlwdG9qcy9qc3JzYVwiLE1ENXdpdGhSU0FhbmRNR0YxOlwiY3J5cHRvanMvanNyc2FcIixTSEExd2l0aFJTQWFuZE1HRjE6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTIyNHdpdGhSU0FhbmRNR0YxOlwiY3J5cHRvanMvanNyc2FcIixTSEEyNTZ3aXRoUlNBYW5kTUdGMTpcImNyeXB0b2pzL2pzcnNhXCIsU0hBMzg0d2l0aFJTQWFuZE1HRjE6XCJjcnlwdG9qcy9qc3JzYVwiLFNIQTUxMndpdGhSU0FhbmRNR0YxOlwiY3J5cHRvanMvanNyc2FcIixSSVBFTUQxNjB3aXRoUlNBYW5kTUdGMTpcImNyeXB0b2pzL2pzcnNhXCIsfTt0aGlzLkNSWVBUT0pTTUVTU0FHRURJR0VTVE5BTUU9e21kNTpDcnlwdG9KUy5hbGdvLk1ENSxzaGExOkNyeXB0b0pTLmFsZ28uU0hBMSxzaGEyMjQ6Q3J5cHRvSlMuYWxnby5TSEEyMjQsc2hhMjU2OkNyeXB0b0pTLmFsZ28uU0hBMjU2LHNoYTM4NDpDcnlwdG9KUy5hbGdvLlNIQTM4NCxzaGE1MTI6Q3J5cHRvSlMuYWxnby5TSEE1MTIscmlwZW1kMTYwOkNyeXB0b0pTLmFsZ28uUklQRU1EMTYwfTt0aGlzLmdldERpZ2VzdEluZm9IZXg9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgdGhpcy5ESUdFU1RJTkZPSEVBRFtiXT09XCJ1bmRlZmluZWRcIil7dGhyb3dcImFsZyBub3Qgc3VwcG9ydGVkIGluIFV0aWwuRElHRVNUSU5GT0hFQUQ6IFwiK2J9cmV0dXJuIHRoaXMuRElHRVNUSU5GT0hFQURbYl0rYX07dGhpcy5nZXRQYWRkZWREaWdlc3RJbmZvSGV4PWZ1bmN0aW9uKGgsYSxqKXt2YXIgYz10aGlzLmdldERpZ2VzdEluZm9IZXgoaCxhKTt2YXIgZD1qLzQ7aWYoYy5sZW5ndGgrMjI+ZCl7dGhyb3dcImtleSBpcyB0b28gc2hvcnQgZm9yIFNpZ0FsZzoga2V5bGVuPVwiK2orXCIsXCIrYX12YXIgYj1cIjAwMDFcIjt2YXIgaz1cIjAwXCIrYzt2YXIgZz1cIlwiO3ZhciBsPWQtYi5sZW5ndGgtay5sZW5ndGg7Zm9yKHZhciBmPTA7ZjxsO2YrPTIpe2crPVwiZmZcIn12YXIgZT1iK2craztyZXR1cm4gZX07dGhpcy5oYXNoU3RyaW5nPWZ1bmN0aW9uKGEsYyl7dmFyIGI9bmV3IEtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Qoe2FsZzpjfSk7cmV0dXJuIGIuZGlnZXN0U3RyaW5nKGEpfTt0aGlzLmhhc2hIZXg9ZnVuY3Rpb24oYixjKXt2YXIgYT1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOmN9KTtyZXR1cm4gYS5kaWdlc3RIZXgoYil9O3RoaXMuc2hhMT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOlwic2hhMVwiLHByb3Y6XCJjcnlwdG9qc1wifSk7cmV0dXJuIGIuZGlnZXN0U3RyaW5nKGEpfTt0aGlzLnNoYTI1Nj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOlwic2hhMjU2XCIscHJvdjpcImNyeXB0b2pzXCJ9KTtyZXR1cm4gYi5kaWdlc3RTdHJpbmcoYSl9O3RoaXMuc2hhMjU2SGV4PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJzaGEyNTZcIixwcm92OlwiY3J5cHRvanNcIn0pO3JldHVybiBiLmRpZ2VzdEhleChhKX07dGhpcy5zaGE1MTI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Qoe2FsZzpcInNoYTUxMlwiLHByb3Y6XCJjcnlwdG9qc1wifSk7cmV0dXJuIGIuZGlnZXN0U3RyaW5nKGEpfTt0aGlzLnNoYTUxMkhleD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOlwic2hhNTEyXCIscHJvdjpcImNyeXB0b2pzXCJ9KTtyZXR1cm4gYi5kaWdlc3RIZXgoYSl9fTtLSlVSLmNyeXB0by5VdGlsLm1kNT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgS0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdCh7YWxnOlwibWQ1XCIscHJvdjpcImNyeXB0b2pzXCJ9KTtyZXR1cm4gYi5kaWdlc3RTdHJpbmcoYSl9O0tKVVIuY3J5cHRvLlV0aWwucmlwZW1kMTYwPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0KHthbGc6XCJyaXBlbWQxNjBcIixwcm92OlwiY3J5cHRvanNcIn0pO3JldHVybiBiLmRpZ2VzdFN0cmluZyhhKX07S0pVUi5jcnlwdG8uVXRpbC5TRUNVUkVSQU5ET01HRU49bmV3IFNlY3VyZVJhbmRvbSgpO0tKVVIuY3J5cHRvLlV0aWwuZ2V0UmFuZG9tSGV4T2ZOYnl0ZXM9ZnVuY3Rpb24oYil7dmFyIGE9bmV3IEFycmF5KGIpO0tKVVIuY3J5cHRvLlV0aWwuU0VDVVJFUkFORE9NR0VOLm5leHRCeXRlcyhhKTtyZXR1cm4gQkF0b2hleChhKX07S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyT2ZOYnl0ZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKEtKVVIuY3J5cHRvLlV0aWwuZ2V0UmFuZG9tSGV4T2ZOYnl0ZXMoYSksMTYpfTtLSlVSLmNyeXB0by5VdGlsLmdldFJhbmRvbUhleE9mTmJpdHM9ZnVuY3Rpb24oZCl7dmFyIGM9ZCU4O3ZhciBhPShkLWMpLzg7dmFyIGI9bmV3IEFycmF5KGErMSk7S0pVUi5jcnlwdG8uVXRpbC5TRUNVUkVSQU5ET01HRU4ubmV4dEJ5dGVzKGIpO2JbMF09KCgoMjU1PDxjKSYyNTUpXjI1NSkmYlswXTtyZXR1cm4gQkF0b2hleChiKX07S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyT2ZOYml0cz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIoS0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21IZXhPZk5iaXRzKGEpLDE2KX07S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyWmVyb1RvTWF4PWZ1bmN0aW9uKGIpe3ZhciBhPWIuYml0TGVuZ3RoKCk7d2hpbGUoMSl7dmFyIGM9S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyT2ZOYml0cyhhKTtpZihiLmNvbXBhcmVUbyhjKSE9LTEpe3JldHVybiBjfX19O0tKVVIuY3J5cHRvLlV0aWwuZ2V0UmFuZG9tQmlnSW50ZWdlck1pblRvTWF4PWZ1bmN0aW9uKGUsYil7dmFyIGM9ZS5jb21wYXJlVG8oYik7aWYoYz09MSl7dGhyb3dcImJpTWluIGlzIGdyZWF0ZXIgdGhhbiBiaU1heFwifWlmKGM9PTApe3JldHVybiBlfXZhciBhPWIuc3VidHJhY3QoZSk7dmFyIGQ9S0pVUi5jcnlwdG8uVXRpbC5nZXRSYW5kb21CaWdJbnRlZ2VyWmVyb1RvTWF4KGEpO3JldHVybiBkLmFkZChlKX07S0pVUi5jcnlwdG8uTWVzc2FnZURpZ2VzdD1mdW5jdGlvbihjKXt2YXIgYj1udWxsO3ZhciBhPW51bGw7dmFyIGQ9bnVsbDt0aGlzLnNldEFsZ0FuZFByb3ZpZGVyPWZ1bmN0aW9uKGcsZil7Zz1LSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0LmdldENhbm9uaWNhbEFsZ05hbWUoZyk7aWYoZyE9PW51bGwmJmY9PT11bmRlZmluZWQpe2Y9S0pVUi5jcnlwdG8uVXRpbC5ERUZBVUxUUFJPVklERVJbZ119aWYoXCI6bWQ1OnNoYTE6c2hhMjI0OnNoYTI1NjpzaGEzODQ6c2hhNTEyOnJpcGVtZDE2MDpcIi5pbmRleE9mKGcpIT0tMSYmZj09XCJjcnlwdG9qc1wiKXt0cnl7dGhpcy5tZD1LSlVSLmNyeXB0by5VdGlsLkNSWVBUT0pTTUVTU0FHRURJR0VTVE5BTUVbZ10uY3JlYXRlKCl9Y2F0Y2goZSl7dGhyb3dcInNldEFsZ0FuZFByb3ZpZGVyIGhhc2ggYWxnIHNldCBmYWlsIGFsZz1cIitnK1wiL1wiK2V9dGhpcy51cGRhdGVTdHJpbmc9ZnVuY3Rpb24oaCl7dGhpcy5tZC51cGRhdGUoaCl9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKGgpe3ZhciBpPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoaCk7dGhpcy5tZC51cGRhdGUoaSl9O3RoaXMuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5tZC5maW5hbGl6ZSgpO3JldHVybiBoLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpfTt0aGlzLmRpZ2VzdFN0cmluZz1mdW5jdGlvbihoKXt0aGlzLnVwZGF0ZVN0cmluZyhoKTtyZXR1cm4gdGhpcy5kaWdlc3QoKX07dGhpcy5kaWdlc3RIZXg9ZnVuY3Rpb24oaCl7dGhpcy51cGRhdGVIZXgoaCk7cmV0dXJuIHRoaXMuZGlnZXN0KCl9fWlmKFwiOnNoYTI1NjpcIi5pbmRleE9mKGcpIT0tMSYmZj09XCJzamNsXCIpe3RyeXt0aGlzLm1kPW5ldyBzamNsLmhhc2guc2hhMjU2KCl9Y2F0Y2goZSl7dGhyb3dcInNldEFsZ0FuZFByb3ZpZGVyIGhhc2ggYWxnIHNldCBmYWlsIGFsZz1cIitnK1wiL1wiK2V9dGhpcy51cGRhdGVTdHJpbmc9ZnVuY3Rpb24oaCl7dGhpcy5tZC51cGRhdGUoaCl9O3RoaXMudXBkYXRlSGV4PWZ1bmN0aW9uKGkpe3ZhciBoPXNqY2wuY29kZWMuaGV4LnRvQml0cyhpKTt0aGlzLm1kLnVwZGF0ZShoKX07dGhpcy5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm1kLmZpbmFsaXplKCk7cmV0dXJuIHNqY2wuY29kZWMuaGV4LmZyb21CaXRzKGgpfTt0aGlzLmRpZ2VzdFN0cmluZz1mdW5jdGlvbihoKXt0aGlzLnVwZGF0ZVN0cmluZyhoKTtyZXR1cm4gdGhpcy5kaWdlc3QoKX07dGhpcy5kaWdlc3RIZXg9ZnVuY3Rpb24oaCl7dGhpcy51cGRhdGVIZXgoaCk7cmV0dXJuIHRoaXMuZGlnZXN0KCl9fX07dGhpcy51cGRhdGVTdHJpbmc9ZnVuY3Rpb24oZSl7dGhyb3dcInVwZGF0ZVN0cmluZyhzdHIpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnL3Byb3Y6IFwiK3RoaXMuYWxnTmFtZStcIi9cIit0aGlzLnByb3ZOYW1lfTt0aGlzLnVwZGF0ZUhleD1mdW5jdGlvbihlKXt0aHJvd1widXBkYXRlSGV4KGhleCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdOYW1lK1wiL1wiK3RoaXMucHJvdk5hbWV9O3RoaXMuZGlnZXN0PWZ1bmN0aW9uKCl7dGhyb3dcImRpZ2VzdCgpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnL3Byb3Y6IFwiK3RoaXMuYWxnTmFtZStcIi9cIit0aGlzLnByb3ZOYW1lfTt0aGlzLmRpZ2VzdFN0cmluZz1mdW5jdGlvbihlKXt0aHJvd1wiZGlnZXN0U3RyaW5nKHN0cikgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdOYW1lK1wiL1wiK3RoaXMucHJvdk5hbWV9O3RoaXMuZGlnZXN0SGV4PWZ1bmN0aW9uKGUpe3Rocm93XCJkaWdlc3RIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ05hbWUrXCIvXCIrdGhpcy5wcm92TmFtZX07aWYoYyE9PXVuZGVmaW5lZCl7aWYoYy5hbGchPT11bmRlZmluZWQpe3RoaXMuYWxnTmFtZT1jLmFsZztpZihjLnByb3Y9PT11bmRlZmluZWQpe3RoaXMucHJvdk5hbWU9S0pVUi5jcnlwdG8uVXRpbC5ERUZBVUxUUFJPVklERVJbdGhpcy5hbGdOYW1lXX10aGlzLnNldEFsZ0FuZFByb3ZpZGVyKHRoaXMuYWxnTmFtZSx0aGlzLnByb3ZOYW1lKX19fTtLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0LmdldENhbm9uaWNhbEFsZ05hbWU9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PT1cInN0cmluZ1wiKXthPWEudG9Mb3dlckNhc2UoKTthPWEucmVwbGFjZSgvLS8sXCJcIil9cmV0dXJuIGF9O0tKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3QuZ2V0SGFzaExlbmd0aD1mdW5jdGlvbihjKXt2YXIgYj1LSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0O3ZhciBhPWIuZ2V0Q2Fub25pY2FsQWxnTmFtZShjKTtpZihiLkhBU0hMRU5HVEhbYV09PT11bmRlZmluZWQpe3Rocm93XCJub3Qgc3VwcG9ydGVkIGFsZ29yaXRobTogXCIrY31yZXR1cm4gYi5IQVNITEVOR1RIW2FdfTtLSlVSLmNyeXB0by5NZXNzYWdlRGlnZXN0LkhBU0hMRU5HVEg9e21kNToxNixzaGExOjIwLHNoYTIyNDoyOCxzaGEyNTY6MzIsc2hhMzg0OjQ4LHNoYTUxMjo2NCxyaXBlbWQxNjA6MjB9O0tKVVIuY3J5cHRvLk1hYz1mdW5jdGlvbihkKXt2YXIgZj1udWxsO3ZhciBjPW51bGw7dmFyIGE9bnVsbDt2YXIgZT1udWxsO3ZhciBiPW51bGw7dGhpcy5zZXRBbGdBbmRQcm92aWRlcj1mdW5jdGlvbihrLGkpe2s9ay50b0xvd2VyQ2FzZSgpO2lmKGs9PW51bGwpe2s9XCJobWFjc2hhMVwifWs9ay50b0xvd2VyQ2FzZSgpO2lmKGsuc3Vic3RyKDAsNCkhPVwiaG1hY1wiKXt0aHJvd1wic2V0QWxnQW5kUHJvdmlkZXIgdW5zdXBwb3J0ZWQgSE1BQyBhbGc6IFwiK2t9aWYoaT09PXVuZGVmaW5lZCl7aT1LSlVSLmNyeXB0by5VdGlsLkRFRkFVTFRQUk9WSURFUltrXX10aGlzLmFsZ1Byb3Y9aytcIi9cIitpO3ZhciBnPWsuc3Vic3RyKDQpO2lmKFwiOm1kNTpzaGExOnNoYTIyNDpzaGEyNTY6c2hhMzg0OnNoYTUxMjpyaXBlbWQxNjA6XCIuaW5kZXhPZihnKSE9LTEmJmk9PVwiY3J5cHRvanNcIil7dHJ5e3ZhciBqPUtKVVIuY3J5cHRvLlV0aWwuQ1JZUFRPSlNNRVNTQUdFRElHRVNUTkFNRVtnXTt0aGlzLm1hYz1DcnlwdG9KUy5hbGdvLkhNQUMuY3JlYXRlKGosdGhpcy5wYXNzKX1jYXRjaChoKXt0aHJvd1wic2V0QWxnQW5kUHJvdmlkZXIgaGFzaCBhbGcgc2V0IGZhaWwgaGFzaEFsZz1cIitnK1wiL1wiK2h9dGhpcy51cGRhdGVTdHJpbmc9ZnVuY3Rpb24obCl7dGhpcy5tYWMudXBkYXRlKGwpfTt0aGlzLnVwZGF0ZUhleD1mdW5jdGlvbihsKXt2YXIgbT1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGwpO3RoaXMubWFjLnVwZGF0ZShtKX07dGhpcy5kb0ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5tYWMuZmluYWxpemUoKTtyZXR1cm4gbC50b1N0cmluZyhDcnlwdG9KUy5lbmMuSGV4KX07dGhpcy5kb0ZpbmFsU3RyaW5nPWZ1bmN0aW9uKGwpe3RoaXMudXBkYXRlU3RyaW5nKGwpO3JldHVybiB0aGlzLmRvRmluYWwoKX07dGhpcy5kb0ZpbmFsSGV4PWZ1bmN0aW9uKGwpe3RoaXMudXBkYXRlSGV4KGwpO3JldHVybiB0aGlzLmRvRmluYWwoKX19fTt0aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihnKXt0aHJvd1widXBkYXRlU3RyaW5nKHN0cikgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdQcm92fTt0aGlzLnVwZGF0ZUhleD1mdW5jdGlvbihnKXt0aHJvd1widXBkYXRlSGV4KGhleCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdQcm92fTt0aGlzLmRvRmluYWw9ZnVuY3Rpb24oKXt0aHJvd1wiZGlnZXN0KCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGcvcHJvdjogXCIrdGhpcy5hbGdQcm92fTt0aGlzLmRvRmluYWxTdHJpbmc9ZnVuY3Rpb24oZyl7dGhyb3dcImRpZ2VzdFN0cmluZyhzdHIpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnL3Byb3Y6IFwiK3RoaXMuYWxnUHJvdn07dGhpcy5kb0ZpbmFsSGV4PWZ1bmN0aW9uKGcpe3Rocm93XCJkaWdlc3RIZXgoaGV4KSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZy9wcm92OiBcIit0aGlzLmFsZ1Byb3Z9O3RoaXMuc2V0UGFzc3dvcmQ9ZnVuY3Rpb24oaCl7aWYodHlwZW9mIGg9PVwic3RyaW5nXCIpe3ZhciBnPWg7aWYoaC5sZW5ndGglMj09MXx8IWgubWF0Y2goL15bMC05QS1GYS1mXSskLykpe2c9cnN0cnRvaGV4KGgpfXRoaXMucGFzcz1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGcpO3JldHVybn1pZih0eXBlb2YgaCE9XCJvYmplY3RcIil7dGhyb3dcIktKVVIuY3J5cHRvLk1hYyB1bnN1cHBvcnRlZCBwYXNzd29yZCB0eXBlOiBcIitofXZhciBnPW51bGw7aWYoaC5oZXghPT11bmRlZmluZWQpe2lmKGguaGV4Lmxlbmd0aCUyIT0wfHwhaC5oZXgubWF0Y2goL15bMC05QS1GYS1mXSskLykpe3Rocm93XCJNYWM6IHdyb25nIGhleCBwYXNzd29yZDogXCIraC5oZXh9Zz1oLmhleH1pZihoLnV0ZjghPT11bmRlZmluZWQpe2c9dXRmOHRvaGV4KGgudXRmOCl9aWYoaC5yc3RyIT09dW5kZWZpbmVkKXtnPXJzdHJ0b2hleChoLnJzdHIpfWlmKGguYjY0IT09dW5kZWZpbmVkKXtnPWI2NHRvaGV4KGguYjY0KX1pZihoLmI2NHUhPT11bmRlZmluZWQpe2c9YjY0dXRvaGV4KGguYjY0dSl9aWYoZz09bnVsbCl7dGhyb3dcIktKVVIuY3J5cHRvLk1hYyB1bnN1cHBvcnRlZCBwYXNzd29yZCB0eXBlOiBcIitofXRoaXMucGFzcz1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGcpfTtpZihkIT09dW5kZWZpbmVkKXtpZihkLnBhc3MhPT11bmRlZmluZWQpe3RoaXMuc2V0UGFzc3dvcmQoZC5wYXNzKX1pZihkLmFsZyE9PXVuZGVmaW5lZCl7dGhpcy5hbGdOYW1lPWQuYWxnO2lmKGQucHJvdj09PXVuZGVmaW5lZCl7dGhpcy5wcm92TmFtZT1LSlVSLmNyeXB0by5VdGlsLkRFRkFVTFRQUk9WSURFUlt0aGlzLmFsZ05hbWVdfXRoaXMuc2V0QWxnQW5kUHJvdmlkZXIodGhpcy5hbGdOYW1lLHRoaXMucHJvdk5hbWUpfX19O0tKVVIuY3J5cHRvLlNpZ25hdHVyZT1mdW5jdGlvbihvKXt2YXIgcT1udWxsO3ZhciBuPW51bGw7dmFyIHI9bnVsbDt2YXIgYz1udWxsO3ZhciBsPW51bGw7dmFyIGQ9bnVsbDt2YXIgaz1udWxsO3ZhciBoPW51bGw7dmFyIHA9bnVsbDt2YXIgZT1udWxsO3ZhciBiPS0xO3ZhciBnPW51bGw7dmFyIGo9bnVsbDt2YXIgYT1udWxsO3ZhciBpPW51bGw7dmFyIGY9bnVsbDt0aGlzLl9zZXRBbGdOYW1lcz1mdW5jdGlvbigpe3ZhciBzPXRoaXMuYWxnTmFtZS5tYXRjaCgvXiguKyl3aXRoKC4rKSQvKTtpZihzKXt0aGlzLm1kQWxnTmFtZT1zWzFdLnRvTG93ZXJDYXNlKCk7dGhpcy5wdWJrZXlBbGdOYW1lPXNbMl0udG9Mb3dlckNhc2UoKX19O3RoaXMuX3plcm9QYWRkaW5nT2ZTaWduYXR1cmU9ZnVuY3Rpb24oeCx3KXt2YXIgdj1cIlwiO3ZhciB0PXcvNC14Lmxlbmd0aDtmb3IodmFyIHU9MDt1PHQ7dSsrKXt2PXYrXCIwXCJ9cmV0dXJuIHYreH07dGhpcy5zZXRBbGdBbmRQcm92aWRlcj1mdW5jdGlvbih1LHQpe3RoaXMuX3NldEFsZ05hbWVzKCk7aWYodCE9XCJjcnlwdG9qcy9qc3JzYVwiKXt0aHJvd1wicHJvdmlkZXIgbm90IHN1cHBvcnRlZDogXCIrdH1pZihcIjptZDU6c2hhMTpzaGEyMjQ6c2hhMjU2OnNoYTM4NDpzaGE1MTI6cmlwZW1kMTYwOlwiLmluZGV4T2YodGhpcy5tZEFsZ05hbWUpIT0tMSl7dHJ5e3RoaXMubWQ9bmV3IEtKVVIuY3J5cHRvLk1lc3NhZ2VEaWdlc3Qoe2FsZzp0aGlzLm1kQWxnTmFtZX0pfWNhdGNoKHMpe3Rocm93XCJzZXRBbGdBbmRQcm92aWRlciBoYXNoIGFsZyBzZXQgZmFpbCBhbGc9XCIrdGhpcy5tZEFsZ05hbWUrXCIvXCIrc310aGlzLmluaXQ9ZnVuY3Rpb24odyx4KXt2YXIgeT1udWxsO3RyeXtpZih4PT09dW5kZWZpbmVkKXt5PUtFWVVUSUwuZ2V0S2V5KHcpfWVsc2V7eT1LRVlVVElMLmdldEtleSh3LHgpfX1jYXRjaCh2KXt0aHJvd1wiaW5pdCBmYWlsZWQ6XCIrdn1pZih5LmlzUHJpdmF0ZT09PXRydWUpe3RoaXMucHJ2S2V5PXk7dGhpcy5zdGF0ZT1cIlNJR05cIn1lbHNle2lmKHkuaXNQdWJsaWM9PT10cnVlKXt0aGlzLnB1YktleT15O3RoaXMuc3RhdGU9XCJWRVJJRllcIn1lbHNle3Rocm93XCJpbml0IGZhaWxlZC46XCIreX19fTt0aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbih2KXt0aGlzLm1kLnVwZGF0ZVN0cmluZyh2KX07dGhpcy51cGRhdGVIZXg9ZnVuY3Rpb24odil7dGhpcy5tZC51cGRhdGVIZXgodil9O3RoaXMuc2lnbj1mdW5jdGlvbigpe3RoaXMuc0hhc2hIZXg9dGhpcy5tZC5kaWdlc3QoKTtpZih0eXBlb2YgdGhpcy5lY3BydmhleCE9XCJ1bmRlZmluZWRcIiYmdHlwZW9mIHRoaXMuZWNjdXJ2ZW5hbWUhPVwidW5kZWZpbmVkXCIpe3ZhciB2PW5ldyBLSlVSLmNyeXB0by5FQ0RTQSh7Y3VydmU6dGhpcy5lY2N1cnZlbmFtZX0pO3RoaXMuaFNpZ249di5zaWduSGV4KHRoaXMuc0hhc2hIZXgsdGhpcy5lY3BydmhleCl9ZWxzZXtpZih0aGlzLnBydktleSBpbnN0YW5jZW9mIFJTQUtleSYmdGhpcy5wdWJrZXlBbGdOYW1lPT09XCJyc2FhbmRtZ2YxXCIpe3RoaXMuaFNpZ249dGhpcy5wcnZLZXkuc2lnbldpdGhNZXNzYWdlSGFzaFBTUyh0aGlzLnNIYXNoSGV4LHRoaXMubWRBbGdOYW1lLHRoaXMucHNzU2FsdExlbil9ZWxzZXtpZih0aGlzLnBydktleSBpbnN0YW5jZW9mIFJTQUtleSYmdGhpcy5wdWJrZXlBbGdOYW1lPT09XCJyc2FcIil7dGhpcy5oU2lnbj10aGlzLnBydktleS5zaWduV2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgsdGhpcy5tZEFsZ05hbWUpfWVsc2V7aWYodGhpcy5wcnZLZXkgaW5zdGFuY2VvZiBLSlVSLmNyeXB0by5FQ0RTQSl7dGhpcy5oU2lnbj10aGlzLnBydktleS5zaWduV2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgpfWVsc2V7aWYodGhpcy5wcnZLZXkgaW5zdGFuY2VvZiBLSlVSLmNyeXB0by5EU0Epe3RoaXMuaFNpZ249dGhpcy5wcnZLZXkuc2lnbldpdGhNZXNzYWdlSGFzaCh0aGlzLnNIYXNoSGV4KX1lbHNle3Rocm93XCJTaWduYXR1cmU6IHVuc3VwcG9ydGVkIHByaXZhdGUga2V5IGFsZzogXCIrdGhpcy5wdWJrZXlBbGdOYW1lfX19fX1yZXR1cm4gdGhpcy5oU2lnbn07dGhpcy5zaWduU3RyaW5nPWZ1bmN0aW9uKHYpe3RoaXMudXBkYXRlU3RyaW5nKHYpO3JldHVybiB0aGlzLnNpZ24oKX07dGhpcy5zaWduSGV4PWZ1bmN0aW9uKHYpe3RoaXMudXBkYXRlSGV4KHYpO3JldHVybiB0aGlzLnNpZ24oKX07dGhpcy52ZXJpZnk9ZnVuY3Rpb24odil7dGhpcy5zSGFzaEhleD10aGlzLm1kLmRpZ2VzdCgpO2lmKHR5cGVvZiB0aGlzLmVjcHViaGV4IT1cInVuZGVmaW5lZFwiJiZ0eXBlb2YgdGhpcy5lY2N1cnZlbmFtZSE9XCJ1bmRlZmluZWRcIil7dmFyIHc9bmV3IEtKVVIuY3J5cHRvLkVDRFNBKHtjdXJ2ZTp0aGlzLmVjY3VydmVuYW1lfSk7cmV0dXJuIHcudmVyaWZ5SGV4KHRoaXMuc0hhc2hIZXgsdix0aGlzLmVjcHViaGV4KX1lbHNle2lmKHRoaXMucHViS2V5IGluc3RhbmNlb2YgUlNBS2V5JiZ0aGlzLnB1YmtleUFsZ05hbWU9PT1cInJzYWFuZG1nZjFcIil7cmV0dXJuIHRoaXMucHViS2V5LnZlcmlmeVdpdGhNZXNzYWdlSGFzaFBTUyh0aGlzLnNIYXNoSGV4LHYsdGhpcy5tZEFsZ05hbWUsdGhpcy5wc3NTYWx0TGVuKX1lbHNle2lmKHRoaXMucHViS2V5IGluc3RhbmNlb2YgUlNBS2V5JiZ0aGlzLnB1YmtleUFsZ05hbWU9PT1cInJzYVwiKXtyZXR1cm4gdGhpcy5wdWJLZXkudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoKHRoaXMuc0hhc2hIZXgsdil9ZWxzZXtpZihLSlVSLmNyeXB0by5FQ0RTQSE9PXVuZGVmaW5lZCYmdGhpcy5wdWJLZXkgaW5zdGFuY2VvZiBLSlVSLmNyeXB0by5FQ0RTQSl7cmV0dXJuIHRoaXMucHViS2V5LnZlcmlmeVdpdGhNZXNzYWdlSGFzaCh0aGlzLnNIYXNoSGV4LHYpfWVsc2V7aWYoS0pVUi5jcnlwdG8uRFNBIT09dW5kZWZpbmVkJiZ0aGlzLnB1YktleSBpbnN0YW5jZW9mIEtKVVIuY3J5cHRvLkRTQSl7cmV0dXJuIHRoaXMucHViS2V5LnZlcmlmeVdpdGhNZXNzYWdlSGFzaCh0aGlzLnNIYXNoSGV4LHYpfWVsc2V7dGhyb3dcIlNpZ25hdHVyZTogdW5zdXBwb3J0ZWQgcHVibGljIGtleSBhbGc6IFwiK3RoaXMucHVia2V5QWxnTmFtZX19fX19fX19O3RoaXMuaW5pdD1mdW5jdGlvbihzLHQpe3Rocm93XCJpbml0KGtleSwgcGFzcykgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLnVwZGF0ZVN0cmluZz1mdW5jdGlvbihzKXt0aHJvd1widXBkYXRlU3RyaW5nKHN0cikgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLnVwZGF0ZUhleD1mdW5jdGlvbihzKXt0aHJvd1widXBkYXRlSGV4KGhleCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLnNpZ249ZnVuY3Rpb24oKXt0aHJvd1wic2lnbigpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnOnByb3Y9XCIrdGhpcy5hbGdQcm92TmFtZX07dGhpcy5zaWduU3RyaW5nPWZ1bmN0aW9uKHMpe3Rocm93XCJkaWdlc3RTdHJpbmcoc3RyKSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGFsZzpwcm92PVwiK3RoaXMuYWxnUHJvdk5hbWV9O3RoaXMuc2lnbkhleD1mdW5jdGlvbihzKXt0aHJvd1wiZGlnZXN0SGV4KGhleCkgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhbGc6cHJvdj1cIit0aGlzLmFsZ1Byb3ZOYW1lfTt0aGlzLnZlcmlmeT1mdW5jdGlvbihzKXt0aHJvd1widmVyaWZ5KGhTaWdWYWwpIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYWxnOnByb3Y9XCIrdGhpcy5hbGdQcm92TmFtZX07dGhpcy5pbml0UGFyYW1zPW87aWYobyE9PXVuZGVmaW5lZCl7aWYoby5hbGchPT11bmRlZmluZWQpe3RoaXMuYWxnTmFtZT1vLmFsZztpZihvLnByb3Y9PT11bmRlZmluZWQpe3RoaXMucHJvdk5hbWU9S0pVUi5jcnlwdG8uVXRpbC5ERUZBVUxUUFJPVklERVJbdGhpcy5hbGdOYW1lXX1lbHNle3RoaXMucHJvdk5hbWU9by5wcm92fXRoaXMuYWxnUHJvdk5hbWU9dGhpcy5hbGdOYW1lK1wiOlwiK3RoaXMucHJvdk5hbWU7dGhpcy5zZXRBbGdBbmRQcm92aWRlcih0aGlzLmFsZ05hbWUsdGhpcy5wcm92TmFtZSk7dGhpcy5fc2V0QWxnTmFtZXMoKX1pZihvLnBzc3NhbHRsZW4hPT11bmRlZmluZWQpe3RoaXMucHNzU2FsdExlbj1vLnBzc3NhbHRsZW59aWYoby5wcnZrZXlwZW0hPT11bmRlZmluZWQpe2lmKG8ucHJ2a2V5cGFzIT09dW5kZWZpbmVkKXt0aHJvd1wiYm90aCBwcnZrZXlwZW0gYW5kIHBydmtleXBhcyBwYXJhbWV0ZXJzIG5vdCBzdXBwb3J0ZWRcIn1lbHNle3RyeXt2YXIgcT1LRVlVVElMLmdldEtleShvLnBydmtleXBlbSk7dGhpcy5pbml0KHEpfWNhdGNoKG0pe3Rocm93XCJmYXRhbCBlcnJvciB0byBsb2FkIHBlbSBwcml2YXRlIGtleTogXCIrbX19fX19O0tKVVIuY3J5cHRvLkNpcGhlcj1mdW5jdGlvbihhKXt9O0tKVVIuY3J5cHRvLkNpcGhlci5lbmNyeXB0PWZ1bmN0aW9uKGUsZixkKXtpZihmIGluc3RhbmNlb2YgUlNBS2V5JiZmLmlzUHVibGljKXt2YXIgYz1LSlVSLmNyeXB0by5DaXBoZXIuZ2V0QWxnQnlLZXlBbmROYW1lKGYsZCk7aWYoYz09PVwiUlNBXCIpe3JldHVybiBmLmVuY3J5cHQoZSl9aWYoYz09PVwiUlNBT0FFUFwiKXtyZXR1cm4gZi5lbmNyeXB0T0FFUChlLFwic2hhMVwiKX12YXIgYj1jLm1hdGNoKC9eUlNBT0FFUChcXGQrKSQvKTtpZihiIT09bnVsbCl7cmV0dXJuIGYuZW5jcnlwdE9BRVAoZSxcInNoYVwiK2JbMV0pfXRocm93XCJDaXBoZXIuZW5jcnlwdDogdW5zdXBwb3J0ZWQgYWxnb3JpdGhtIGZvciBSU0FLZXk6IFwiK2R9ZWxzZXt0aHJvd1wiQ2lwaGVyLmVuY3J5cHQ6IHVuc3VwcG9ydGVkIGtleSBvciBhbGdvcml0aG1cIn19O0tKVVIuY3J5cHRvLkNpcGhlci5kZWNyeXB0PWZ1bmN0aW9uKGUsZixkKXtpZihmIGluc3RhbmNlb2YgUlNBS2V5JiZmLmlzUHJpdmF0ZSl7dmFyIGM9S0pVUi5jcnlwdG8uQ2lwaGVyLmdldEFsZ0J5S2V5QW5kTmFtZShmLGQpO2lmKGM9PT1cIlJTQVwiKXtyZXR1cm4gZi5kZWNyeXB0KGUpfWlmKGM9PT1cIlJTQU9BRVBcIil7cmV0dXJuIGYuZGVjcnlwdE9BRVAoZSxcInNoYTFcIil9dmFyIGI9Yy5tYXRjaCgvXlJTQU9BRVAoXFxkKykkLyk7aWYoYiE9PW51bGwpe3JldHVybiBmLmRlY3J5cHRPQUVQKGUsXCJzaGFcIitiWzFdKX10aHJvd1wiQ2lwaGVyLmRlY3J5cHQ6IHVuc3VwcG9ydGVkIGFsZ29yaXRobSBmb3IgUlNBS2V5OiBcIitkfWVsc2V7dGhyb3dcIkNpcGhlci5kZWNyeXB0OiB1bnN1cHBvcnRlZCBrZXkgb3IgYWxnb3JpdGhtXCJ9fTtLSlVSLmNyeXB0by5DaXBoZXIuZ2V0QWxnQnlLZXlBbmROYW1lPWZ1bmN0aW9uKGIsYSl7aWYoYiBpbnN0YW5jZW9mIFJTQUtleSl7aWYoXCI6UlNBOlJTQU9BRVA6UlNBT0FFUDIyNDpSU0FPQUVQMjU2OlJTQU9BRVAzODQ6UlNBT0FFUDUxMjpcIi5pbmRleE9mKGEpIT0tMSl7cmV0dXJuIGF9aWYoYT09PW51bGx8fGE9PT11bmRlZmluZWQpe3JldHVyblwiUlNBXCJ9dGhyb3dcImdldEFsZ0J5S2V5QW5kTmFtZTogbm90IHN1cHBvcnRlZCBhbGdvcml0aG0gbmFtZSBmb3IgUlNBS2V5OiBcIithfXRocm93XCJnZXRBbGdCeUtleUFuZE5hbWU6IG5vdCBzdXBwb3J0ZWQgYWxnb3JpdGhtIG5hbWU6IFwiK2F9O0tKVVIuY3J5cHRvLk9JRD1uZXcgZnVuY3Rpb24oKXt0aGlzLm9pZGhleDJuYW1lPXtcIjJhODY0ODg2ZjcwZDAxMDEwMVwiOlwicnNhRW5jcnlwdGlvblwiLFwiMmE4NjQ4Y2UzZDAyMDFcIjpcImVjUHVibGljS2V5XCIsXCIyYTg2NDhjZTM4MDQwMVwiOlwiZHNhXCIsXCIyYTg2NDhjZTNkMDMwMTA3XCI6XCJzZWNwMjU2cjFcIixcIjJiODEwNDAwMWZcIjpcInNlY3AxOTJrMVwiLFwiMmI4MTA0MDAyMVwiOlwic2VjcDIyNHIxXCIsXCIyYjgxMDQwMDBhXCI6XCJzZWNwMjU2azFcIixcIjJiODEwNDAwMjNcIjpcInNlY3A1MjFyMVwiLFwiMmI4MTA0MDAyMlwiOlwic2VjcDM4NHIxXCIsXCIyYTg2NDhjZTM4MDQwM1wiOlwiU0hBMXdpdGhEU0FcIixcIjYwODY0ODAxNjUwMzA0MDMwMVwiOlwiU0hBMjI0d2l0aERTQVwiLFwiNjA4NjQ4MDE2NTAzMDQwMzAyXCI6XCJTSEEyNTZ3aXRoRFNBXCIsfX07XG5pZih0eXBlb2YgS0pVUj09XCJ1bmRlZmluZWRcInx8IUtKVVIpe0tKVVI9e319aWYodHlwZW9mIEtKVVIuY3J5cHRvPT1cInVuZGVmaW5lZFwifHwhS0pVUi5jcnlwdG8pe0tKVVIuY3J5cHRvPXt9fUtKVVIuY3J5cHRvLkVDRFNBPWZ1bmN0aW9uKGgpe3ZhciBlPVwic2VjcDI1NnIxXCI7dmFyIGc9bnVsbDt2YXIgYj1udWxsO3ZhciBmPW51bGw7dmFyIGE9bmV3IFNlY3VyZVJhbmRvbSgpO3ZhciBkPW51bGw7dGhpcy50eXBlPVwiRUNcIjt0aGlzLmlzUHJpdmF0ZT1mYWxzZTt0aGlzLmlzUHVibGljPWZhbHNlO2Z1bmN0aW9uIGMocyxvLHIsbil7dmFyIGo9TWF0aC5tYXgoby5iaXRMZW5ndGgoKSxuLmJpdExlbmd0aCgpKTt2YXIgdD1zLmFkZDJEKHIpO3ZhciBxPXMuY3VydmUuZ2V0SW5maW5pdHkoKTtmb3IodmFyIHA9ai0xO3A+PTA7LS1wKXtxPXEudHdpY2UyRCgpO3Euej1CaWdJbnRlZ2VyLk9ORTtpZihvLnRlc3RCaXQocCkpe2lmKG4udGVzdEJpdChwKSl7cT1xLmFkZDJEKHQpfWVsc2V7cT1xLmFkZDJEKHMpfX1lbHNle2lmKG4udGVzdEJpdChwKSl7cT1xLmFkZDJEKHIpfX19cmV0dXJuIHF9dGhpcy5nZXRCaWdSYW5kb209ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGkuYml0TGVuZ3RoKCksYSkubW9kKGkuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpKS5hZGQoQmlnSW50ZWdlci5PTkUpfTt0aGlzLnNldE5hbWVkQ3VydmU9ZnVuY3Rpb24oaSl7dGhpcy5lY3BhcmFtcz1LSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLmdldEJ5TmFtZShpKTt0aGlzLnBydktleUhleD1udWxsO3RoaXMucHViS2V5SGV4PW51bGw7dGhpcy5jdXJ2ZU5hbWU9aX07dGhpcy5zZXRQcml2YXRlS2V5SGV4PWZ1bmN0aW9uKGkpe3RoaXMuaXNQcml2YXRlPXRydWU7dGhpcy5wcnZLZXlIZXg9aX07dGhpcy5zZXRQdWJsaWNLZXlIZXg9ZnVuY3Rpb24oaSl7dGhpcy5pc1B1YmxpYz10cnVlO3RoaXMucHViS2V5SGV4PWl9O3RoaXMuZ2V0UHVibGljS2V5WFlIZXg9ZnVuY3Rpb24oKXt2YXIgaz10aGlzLnB1YktleUhleDtpZihrLnN1YnN0cigwLDIpIT09XCIwNFwiKXt0aHJvd1widGhpcyBtZXRob2Qgc3VwcG9ydHMgdW5jb21wcmVzc2VkIGZvcm1hdCgwNCkgb25seVwifXZhciBqPXRoaXMuZWNwYXJhbXMua2V5bGVuLzQ7aWYoay5sZW5ndGghPT0yK2oqMil7dGhyb3dcIm1hbGZvcm1lZCBwdWJsaWMga2V5IGhleCBsZW5ndGhcIn12YXIgaT17fTtpLng9ay5zdWJzdHIoMixqKTtpLnk9ay5zdWJzdHIoMitqKTtyZXR1cm4gaX07dGhpcy5nZXRTaG9ydE5JU1RQQ3VydmVOYW1lPWZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5jdXJ2ZU5hbWU7aWYoaT09PVwic2VjcDI1NnIxXCJ8fGk9PT1cIk5JU1QgUC0yNTZcInx8aT09PVwiUC0yNTZcInx8aT09PVwicHJpbWUyNTZ2MVwiKXtyZXR1cm5cIlAtMjU2XCJ9aWYoaT09PVwic2VjcDM4NHIxXCJ8fGk9PT1cIk5JU1QgUC0zODRcInx8aT09PVwiUC0zODRcIil7cmV0dXJuXCJQLTM4NFwifXJldHVybiBudWxsfTt0aGlzLmdlbmVyYXRlS2V5UGFpckhleD1mdW5jdGlvbigpe3ZhciBrPXRoaXMuZWNwYXJhbXMubjt2YXIgbj10aGlzLmdldEJpZ1JhbmRvbShrKTt2YXIgbD10aGlzLmVjcGFyYW1zLkcubXVsdGlwbHkobik7dmFyIHE9bC5nZXRYKCkudG9CaWdJbnRlZ2VyKCk7dmFyIG89bC5nZXRZKCkudG9CaWdJbnRlZ2VyKCk7dmFyIGk9dGhpcy5lY3BhcmFtcy5rZXlsZW4vNDt2YXIgbT0oXCIwMDAwMDAwMDAwXCIrbi50b1N0cmluZygxNikpLnNsaWNlKC1pKTt2YXIgcj0oXCIwMDAwMDAwMDAwXCIrcS50b1N0cmluZygxNikpLnNsaWNlKC1pKTt2YXIgcD0oXCIwMDAwMDAwMDAwXCIrby50b1N0cmluZygxNikpLnNsaWNlKC1pKTt2YXIgaj1cIjA0XCIrcitwO3RoaXMuc2V0UHJpdmF0ZUtleUhleChtKTt0aGlzLnNldFB1YmxpY0tleUhleChqKTtyZXR1cm57ZWNwcnZoZXg6bSxlY3B1YmhleDpqfX07dGhpcy5zaWduV2l0aE1lc3NhZ2VIYXNoPWZ1bmN0aW9uKGkpe3JldHVybiB0aGlzLnNpZ25IZXgoaSx0aGlzLnBydktleUhleCl9O3RoaXMuc2lnbkhleD1mdW5jdGlvbihvLGope3ZhciB0PW5ldyBCaWdJbnRlZ2VyKGosMTYpO3ZhciBsPXRoaXMuZWNwYXJhbXMubjt2YXIgcT1uZXcgQmlnSW50ZWdlcihvLDE2KTtkb3t2YXIgbT10aGlzLmdldEJpZ1JhbmRvbShsKTt2YXIgdT10aGlzLmVjcGFyYW1zLkc7dmFyIHA9dS5tdWx0aXBseShtKTt2YXIgaT1wLmdldFgoKS50b0JpZ0ludGVnZXIoKS5tb2QobCl9d2hpbGUoaS5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKTw9MCk7dmFyIHY9bS5tb2RJbnZlcnNlKGwpLm11bHRpcGx5KHEuYWRkKHQubXVsdGlwbHkoaSkpKS5tb2QobCk7cmV0dXJuIEtKVVIuY3J5cHRvLkVDRFNBLmJpUlNTaWdUb0FTTjFTaWcoaSx2KX07dGhpcy5zaWduPWZ1bmN0aW9uKG0sdSl7dmFyIHE9dTt2YXIgaj10aGlzLmVjcGFyYW1zLm47dmFyIHA9QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQobSk7ZG97dmFyIGw9dGhpcy5nZXRCaWdSYW5kb20oaik7dmFyIHQ9dGhpcy5lY3BhcmFtcy5HO3ZhciBvPXQubXVsdGlwbHkobCk7dmFyIGk9by5nZXRYKCkudG9CaWdJbnRlZ2VyKCkubW9kKGopfXdoaWxlKGkuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTyk8PTApO3ZhciB2PWwubW9kSW52ZXJzZShqKS5tdWx0aXBseShwLmFkZChxLm11bHRpcGx5KGkpKSkubW9kKGopO3JldHVybiB0aGlzLnNlcmlhbGl6ZVNpZyhpLHYpfTt0aGlzLnZlcmlmeVdpdGhNZXNzYWdlSGFzaD1mdW5jdGlvbihqLGkpe3JldHVybiB0aGlzLnZlcmlmeUhleChqLGksdGhpcy5wdWJLZXlIZXgpfTt0aGlzLnZlcmlmeUhleD1mdW5jdGlvbihtLGkscCl7dmFyIGwsajt2YXIgbz1LSlVSLmNyeXB0by5FQ0RTQS5wYXJzZVNpZ0hleChpKTtsPW8ucjtqPW8uczt2YXIgaztrPUVDUG9pbnRGcC5kZWNvZGVGcm9tSGV4KHRoaXMuZWNwYXJhbXMuY3VydmUscCk7dmFyIG49bmV3IEJpZ0ludGVnZXIobSwxNik7cmV0dXJuIHRoaXMudmVyaWZ5UmF3KG4sbCxqLGspfTt0aGlzLnZlcmlmeT1mdW5jdGlvbihvLHAsail7dmFyIGwsaTtpZihCaXRjb2luLlV0aWwuaXNBcnJheShwKSl7dmFyIG49dGhpcy5wYXJzZVNpZyhwKTtsPW4ucjtpPW4uc31lbHNle2lmKFwib2JqZWN0XCI9PT10eXBlb2YgcCYmcC5yJiZwLnMpe2w9cC5yO2k9cC5zfWVsc2V7dGhyb3dcIkludmFsaWQgdmFsdWUgZm9yIHNpZ25hdHVyZVwifX12YXIgaztpZihqIGluc3RhbmNlb2YgRUNQb2ludEZwKXtrPWp9ZWxzZXtpZihCaXRjb2luLlV0aWwuaXNBcnJheShqKSl7az1FQ1BvaW50RnAuZGVjb2RlRnJvbSh0aGlzLmVjcGFyYW1zLmN1cnZlLGopfWVsc2V7dGhyb3dcIkludmFsaWQgZm9ybWF0IGZvciBwdWJrZXkgdmFsdWUsIG11c3QgYmUgYnl0ZSBhcnJheSBvciBFQ1BvaW50RnBcIn19dmFyIG09QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQobyk7cmV0dXJuIHRoaXMudmVyaWZ5UmF3KG0sbCxpLGspfTt0aGlzLnZlcmlmeVJhdz1mdW5jdGlvbihvLGksdyxtKXt2YXIgbD10aGlzLmVjcGFyYW1zLm47dmFyIHU9dGhpcy5lY3BhcmFtcy5HO2lmKGkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKTwwfHxpLmNvbXBhcmVUbyhsKT49MCl7cmV0dXJuIGZhbHNlfWlmKHcuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKTwwfHx3LmNvbXBhcmVUbyhsKT49MCl7cmV0dXJuIGZhbHNlfXZhciBwPXcubW9kSW52ZXJzZShsKTt2YXIgaz1vLm11bHRpcGx5KHApLm1vZChsKTt2YXIgaj1pLm11bHRpcGx5KHApLm1vZChsKTt2YXIgcT11Lm11bHRpcGx5KGspLmFkZChtLm11bHRpcGx5KGopKTt2YXIgdD1xLmdldFgoKS50b0JpZ0ludGVnZXIoKS5tb2QobCk7cmV0dXJuIHQuZXF1YWxzKGkpfTt0aGlzLnNlcmlhbGl6ZVNpZz1mdW5jdGlvbihrLGope3ZhciBsPWsudG9CeXRlQXJyYXlTaWduZWQoKTt2YXIgaT1qLnRvQnl0ZUFycmF5U2lnbmVkKCk7dmFyIG09W107bS5wdXNoKDIpO20ucHVzaChsLmxlbmd0aCk7bT1tLmNvbmNhdChsKTttLnB1c2goMik7bS5wdXNoKGkubGVuZ3RoKTttPW0uY29uY2F0KGkpO20udW5zaGlmdChtLmxlbmd0aCk7bS51bnNoaWZ0KDQ4KTtyZXR1cm4gbX07dGhpcy5wYXJzZVNpZz1mdW5jdGlvbihuKXt2YXIgbTtpZihuWzBdIT00OCl7dGhyb3cgbmV3IEVycm9yKFwiU2lnbmF0dXJlIG5vdCBhIHZhbGlkIERFUlNlcXVlbmNlXCIpfW09MjtpZihuW21dIT0yKXt0aHJvdyBuZXcgRXJyb3IoXCJGaXJzdCBlbGVtZW50IGluIHNpZ25hdHVyZSBtdXN0IGJlIGEgREVSSW50ZWdlclwiKX12YXIgbD1uLnNsaWNlKG0rMixtKzIrblttKzFdKTttKz0yK25bbSsxXTtpZihuW21dIT0yKXt0aHJvdyBuZXcgRXJyb3IoXCJTZWNvbmQgZWxlbWVudCBpbiBzaWduYXR1cmUgbXVzdCBiZSBhIERFUkludGVnZXJcIil9dmFyIGk9bi5zbGljZShtKzIsbSsyK25bbSsxXSk7bSs9MituW20rMV07dmFyIGs9QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQobCk7dmFyIGo9QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQoaSk7cmV0dXJue3I6ayxzOmp9fTt0aGlzLnBhcnNlU2lnQ29tcGFjdD1mdW5jdGlvbihtKXtpZihtLmxlbmd0aCE9PTY1KXt0aHJvd1wiU2lnbmF0dXJlIGhhcyB0aGUgd3JvbmcgbGVuZ3RoXCJ9dmFyIGo9bVswXS0yNztpZihqPDB8fGo+Nyl7dGhyb3dcIkludmFsaWQgc2lnbmF0dXJlIHR5cGVcIn12YXIgbz10aGlzLmVjcGFyYW1zLm47dmFyIGw9QmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQobS5zbGljZSgxLDMzKSkubW9kKG8pO3ZhciBrPUJpZ0ludGVnZXIuZnJvbUJ5dGVBcnJheVVuc2lnbmVkKG0uc2xpY2UoMzMsNjUpKS5tb2Qobyk7cmV0dXJue3I6bCxzOmssaTpqfX07dGhpcy5yZWFkUEtDUzVQcnZLZXlIZXg9ZnVuY3Rpb24obCl7dmFyIG49QVNOMUhFWDt2YXIgbT1LSlVSLmNyeXB0by5FQ0RTQS5nZXROYW1lO3ZhciBwPW4uZ2V0VmJ5TGlzdDtpZihuLmlzQVNOMUhFWChsKT09PWZhbHNlKXt0aHJvd1wibm90IEFTTi4xIGhleCBzdHJpbmdcIn12YXIgaSxrLG87dHJ5e2k9cChsLDAsWzIsMF0sXCIwNlwiKTtrPXAobCwwLFsxXSxcIjA0XCIpO3RyeXtvPXAobCwwLFszLDBdLFwiMDNcIikuc3Vic3RyKDIpfWNhdGNoKGope319Y2F0Y2goail7dGhyb3dcIm1hbGZvcm1lZCBQS0NTIzEvNSBwbGFpbiBFQ0MgcHJpdmF0ZSBrZXlcIn10aGlzLmN1cnZlTmFtZT1tKGkpO2lmKHRoaXMuY3VydmVOYW1lPT09dW5kZWZpbmVkKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZVwifXRoaXMuc2V0TmFtZWRDdXJ2ZSh0aGlzLmN1cnZlTmFtZSk7dGhpcy5zZXRQdWJsaWNLZXlIZXgobyk7dGhpcy5zZXRQcml2YXRlS2V5SGV4KGspO3RoaXMuaXNQdWJsaWM9ZmFsc2V9O3RoaXMucmVhZFBLQ1M4UHJ2S2V5SGV4PWZ1bmN0aW9uKGwpe3ZhciBxPUFTTjFIRVg7dmFyIGk9S0pVUi5jcnlwdG8uRUNEU0EuZ2V0TmFtZTt2YXIgbj1xLmdldFZieUxpc3Q7aWYocS5pc0FTTjFIRVgobCk9PT1mYWxzZSl7dGhyb3dcIm5vdCBBU04uMSBoZXggc3RyaW5nXCJ9dmFyIGoscCxtLGs7dHJ5e2o9bihsLDAsWzEsMF0sXCIwNlwiKTtwPW4obCwwLFsxLDFdLFwiMDZcIik7bT1uKGwsMCxbMiwwLDFdLFwiMDRcIik7dHJ5e2s9bihsLDAsWzIsMCwyLDBdLFwiMDNcIikuc3Vic3RyKDIpfWNhdGNoKG8pe319Y2F0Y2gobyl7dGhyb3dcIm1hbGZvcm1lZCBQS0NTIzggcGxhaW4gRUNDIHByaXZhdGUga2V5XCJ9dGhpcy5jdXJ2ZU5hbWU9aShwKTtpZih0aGlzLmN1cnZlTmFtZT09PXVuZGVmaW5lZCl7dGhyb3dcInVuc3VwcG9ydGVkIGN1cnZlIG5hbWVcIn10aGlzLnNldE5hbWVkQ3VydmUodGhpcy5jdXJ2ZU5hbWUpO3RoaXMuc2V0UHVibGljS2V5SGV4KGspO3RoaXMuc2V0UHJpdmF0ZUtleUhleChtKTt0aGlzLmlzUHVibGljPWZhbHNlfTt0aGlzLnJlYWRQS0NTOFB1YktleUhleD1mdW5jdGlvbihsKXt2YXIgbj1BU04xSEVYO3ZhciBtPUtKVVIuY3J5cHRvLkVDRFNBLmdldE5hbWU7dmFyIHA9bi5nZXRWYnlMaXN0O2lmKG4uaXNBU04xSEVYKGwpPT09ZmFsc2Upe3Rocm93XCJub3QgQVNOLjEgaGV4IHN0cmluZ1wifXZhciBrLGksbzt0cnl7az1wKGwsMCxbMCwwXSxcIjA2XCIpO2k9cChsLDAsWzAsMV0sXCIwNlwiKTtvPXAobCwwLFsxXSxcIjAzXCIpLnN1YnN0cigyKX1jYXRjaChqKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1MjOCBFQ0MgcHVibGljIGtleVwifXRoaXMuY3VydmVOYW1lPW0oaSk7aWYodGhpcy5jdXJ2ZU5hbWU9PT1udWxsKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZVwifXRoaXMuc2V0TmFtZWRDdXJ2ZSh0aGlzLmN1cnZlTmFtZSk7dGhpcy5zZXRQdWJsaWNLZXlIZXgobyl9O3RoaXMucmVhZENlcnRQdWJLZXlIZXg9ZnVuY3Rpb24oayxwKXtpZihwIT09NSl7cD02fXZhciBtPUFTTjFIRVg7dmFyIGw9S0pVUi5jcnlwdG8uRUNEU0EuZ2V0TmFtZTt2YXIgbz1tLmdldFZieUxpc3Q7aWYobS5pc0FTTjFIRVgoayk9PT1mYWxzZSl7dGhyb3dcIm5vdCBBU04uMSBoZXggc3RyaW5nXCJ9dmFyIGksbjt0cnl7aT1vKGssMCxbMCxwLDAsMV0sXCIwNlwiKTtuPW8oaywwLFswLHAsMV0sXCIwM1wiKS5zdWJzdHIoMil9Y2F0Y2goail7dGhyb3dcIm1hbGZvcm1lZCBYLjUwOSBjZXJ0aWZpY2F0ZSBFQ0MgcHVibGljIGtleVwifXRoaXMuY3VydmVOYW1lPWwoaSk7aWYodGhpcy5jdXJ2ZU5hbWU9PT1udWxsKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZVwifXRoaXMuc2V0TmFtZWRDdXJ2ZSh0aGlzLmN1cnZlTmFtZSk7dGhpcy5zZXRQdWJsaWNLZXlIZXgobil9O2lmKGghPT11bmRlZmluZWQpe2lmKGguY3VydmUhPT11bmRlZmluZWQpe3RoaXMuY3VydmVOYW1lPWguY3VydmV9fWlmKHRoaXMuY3VydmVOYW1lPT09dW5kZWZpbmVkKXt0aGlzLmN1cnZlTmFtZT1lfXRoaXMuc2V0TmFtZWRDdXJ2ZSh0aGlzLmN1cnZlTmFtZSk7aWYoaCE9PXVuZGVmaW5lZCl7aWYoaC5wcnYhPT11bmRlZmluZWQpe3RoaXMuc2V0UHJpdmF0ZUtleUhleChoLnBydil9aWYoaC5wdWIhPT11bmRlZmluZWQpe3RoaXMuc2V0UHVibGljS2V5SGV4KGgucHViKX19fTtLSlVSLmNyeXB0by5FQ0RTQS5wYXJzZVNpZ0hleD1mdW5jdGlvbihhKXt2YXIgYj1LSlVSLmNyeXB0by5FQ0RTQS5wYXJzZVNpZ0hleEluSGV4UlMoYSk7dmFyIGQ9bmV3IEJpZ0ludGVnZXIoYi5yLDE2KTt2YXIgYz1uZXcgQmlnSW50ZWdlcihiLnMsMTYpO3JldHVybntyOmQsczpjfX07S0pVUi5jcnlwdG8uRUNEU0EucGFyc2VTaWdIZXhJbkhleFJTPWZ1bmN0aW9uKGYpe3ZhciBqPUFTTjFIRVg7dmFyIGk9ai5nZXRDaGlsZElkeDt2YXIgZz1qLmdldFY7aWYoZi5zdWJzdHIoMCwyKSE9XCIzMFwiKXt0aHJvd1wic2lnbmF0dXJlIGlzIG5vdCBhIEFTTi4xIHNlcXVlbmNlXCJ9dmFyIGg9aShmLDApO2lmKGgubGVuZ3RoIT0yKXt0aHJvd1wibnVtYmVyIG9mIHNpZ25hdHVyZSBBU04uMSBzZXF1ZW5jZSBlbGVtZW50cyBzZWVtIHdyb25nXCJ9dmFyIGU9aFswXTt2YXIgZD1oWzFdO2lmKGYuc3Vic3RyKGUsMikhPVwiMDJcIil7dGhyb3dcIjFzdCBpdGVtIG9mIHNlcXVlbmUgb2Ygc2lnbmF0dXJlIGlzIG5vdCBBU04uMSBpbnRlZ2VyXCJ9aWYoZi5zdWJzdHIoZCwyKSE9XCIwMlwiKXt0aHJvd1wiMm5kIGl0ZW0gb2Ygc2VxdWVuZSBvZiBzaWduYXR1cmUgaXMgbm90IEFTTi4xIGludGVnZXJcIn12YXIgYz1nKGYsZSk7dmFyIGI9ZyhmLGQpO3JldHVybntyOmMsczpifX07S0pVUi5jcnlwdG8uRUNEU0EuYXNuMVNpZ1RvQ29uY2F0U2lnPWZ1bmN0aW9uKGMpe3ZhciBkPUtKVVIuY3J5cHRvLkVDRFNBLnBhcnNlU2lnSGV4SW5IZXhSUyhjKTt2YXIgYj1kLnI7dmFyIGE9ZC5zO2lmKGIuc3Vic3RyKDAsMik9PVwiMDBcIiYmKGIubGVuZ3RoJTMyKT09Mil7Yj1iLnN1YnN0cigyKX1pZihhLnN1YnN0cigwLDIpPT1cIjAwXCImJihhLmxlbmd0aCUzMik9PTIpe2E9YS5zdWJzdHIoMil9aWYoKGIubGVuZ3RoJTMyKT09MzApe2I9XCIwMFwiK2J9aWYoKGEubGVuZ3RoJTMyKT09MzApe2E9XCIwMFwiK2F9aWYoYi5sZW5ndGglMzIhPTApe3Rocm93XCJ1bmtub3duIEVDRFNBIHNpZyByIGxlbmd0aCBlcnJvclwifWlmKGEubGVuZ3RoJTMyIT0wKXt0aHJvd1widW5rbm93biBFQ0RTQSBzaWcgcyBsZW5ndGggZXJyb3JcIn1yZXR1cm4gYithfTtLSlVSLmNyeXB0by5FQ0RTQS5jb25jYXRTaWdUb0FTTjFTaWc9ZnVuY3Rpb24oYSl7aWYoKCgoYS5sZW5ndGgvMikqOCklKDE2KjgpKSE9MCl7dGhyb3dcInVua25vd24gRUNEU0EgY29uY2F0aW5hdGVkIHItcyBzaWcgIGxlbmd0aCBlcnJvclwifXZhciBjPWEuc3Vic3RyKDAsYS5sZW5ndGgvMik7dmFyIGI9YS5zdWJzdHIoYS5sZW5ndGgvMik7cmV0dXJuIEtKVVIuY3J5cHRvLkVDRFNBLmhleFJTU2lnVG9BU04xU2lnKGMsYil9O0tKVVIuY3J5cHRvLkVDRFNBLmhleFJTU2lnVG9BU04xU2lnPWZ1bmN0aW9uKGIsYSl7dmFyIGQ9bmV3IEJpZ0ludGVnZXIoYiwxNik7dmFyIGM9bmV3IEJpZ0ludGVnZXIoYSwxNik7cmV0dXJuIEtKVVIuY3J5cHRvLkVDRFNBLmJpUlNTaWdUb0FTTjFTaWcoZCxjKX07S0pVUi5jcnlwdG8uRUNEU0EuYmlSU1NpZ1RvQVNOMVNpZz1mdW5jdGlvbihmLGQpe3ZhciBjPUtKVVIuYXNuMTt2YXIgYj1uZXcgYy5ERVJJbnRlZ2VyKHtiaWdpbnQ6Zn0pO3ZhciBhPW5ldyBjLkRFUkludGVnZXIoe2JpZ2ludDpkfSk7dmFyIGU9bmV3IGMuREVSU2VxdWVuY2Uoe2FycmF5OltiLGFdfSk7cmV0dXJuIGUuZ2V0RW5jb2RlZEhleCgpfTtLSlVSLmNyeXB0by5FQ0RTQS5nZXROYW1lPWZ1bmN0aW9uKGEpe2lmKGE9PT1cIjJhODY0OGNlM2QwMzAxMDdcIil7cmV0dXJuXCJzZWNwMjU2cjFcIn1pZihhPT09XCIyYjgxMDQwMDBhXCIpe3JldHVyblwic2VjcDI1NmsxXCJ9aWYoYT09PVwiMmI4MTA0MDAyMlwiKXtyZXR1cm5cInNlY3AzODRyMVwifWlmKFwifHNlY3AyNTZyMXxOSVNUIFAtMjU2fFAtMjU2fHByaW1lMjU2djF8XCIuaW5kZXhPZihhKSE9PS0xKXtyZXR1cm5cInNlY3AyNTZyMVwifWlmKFwifHNlY3AyNTZrMXxcIi5pbmRleE9mKGEpIT09LTEpe3JldHVyblwic2VjcDI1NmsxXCJ9aWYoXCJ8c2VjcDM4NHIxfE5JU1QgUC0zODR8UC0zODR8XCIuaW5kZXhPZihhKSE9PS0xKXtyZXR1cm5cInNlY3AzODRyMVwifXJldHVybiBudWxsfTtcbmlmKHR5cGVvZiBLSlVSPT1cInVuZGVmaW5lZFwifHwhS0pVUil7S0pVUj17fX1pZih0eXBlb2YgS0pVUi5jcnlwdG89PVwidW5kZWZpbmVkXCJ8fCFLSlVSLmNyeXB0byl7S0pVUi5jcnlwdG89e319S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQj1uZXcgZnVuY3Rpb24oKXt2YXIgYj17fTt2YXIgYz17fTtmdW5jdGlvbiBhKGQpe3JldHVybiBuZXcgQmlnSW50ZWdlcihkLDE2KX10aGlzLmdldEJ5TmFtZT1mdW5jdGlvbihlKXt2YXIgZD1lO2lmKHR5cGVvZiBjW2RdIT1cInVuZGVmaW5lZFwiKXtkPWNbZV19aWYodHlwZW9mIGJbZF0hPVwidW5kZWZpbmVkXCIpe3JldHVybiBiW2RdfXRocm93XCJ1bnJlZ2lzdGVyZWQgRUMgY3VydmUgbmFtZTogXCIrZH07dGhpcy5yZWdpc3Q9ZnVuY3Rpb24oQSxsLG8sZyxtLGUsaixmLGssdSxkLHgpe2JbQV09e307dmFyIHM9YShvKTt2YXIgej1hKGcpO3ZhciB5PWEobSk7dmFyIHQ9YShlKTt2YXIgdz1hKGopO3ZhciByPW5ldyBFQ0N1cnZlRnAocyx6LHkpO3ZhciBxPXIuZGVjb2RlUG9pbnRIZXgoXCIwNFwiK2Yrayk7YltBXVtcIm5hbWVcIl09QTtiW0FdW1wia2V5bGVuXCJdPWw7YltBXVtcImN1cnZlXCJdPXI7YltBXVtcIkdcIl09cTtiW0FdW1wiblwiXT10O2JbQV1bXCJoXCJdPXc7YltBXVtcIm9pZFwiXT1kO2JbQV1bXCJpbmZvXCJdPXg7Zm9yKHZhciB2PTA7djx1Lmxlbmd0aDt2Kyspe2NbdVt2XV09QX19fTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AxMjhyMVwiLDEyOCxcIkZGRkZGRkZERkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGXCIsXCJGRkZGRkZGREZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ1wiLFwiRTg3NTc5QzExMDc5RjQzREQ4MjQ5OTNDMkNFRTVFRDNcIixcIkZGRkZGRkZFMDAwMDAwMDA3NUEzMEQxQjkwMzhBMTE1XCIsXCIxXCIsXCIxNjFGRjc1MjhCODk5QjJEMEMyODYwN0NBNTJDNUI4NlwiLFwiQ0Y1QUM4Mzk1QkFGRUIxM0MwMkRBMjkyRERFRDdBODNcIixbXSxcIlwiLFwic2VjcDEyOHIxIDogU0VDRyBjdXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBmaWVsZFwiKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AxNjBrMVwiLDE2MCxcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkFDNzNcIixcIjBcIixcIjdcIixcIjAxMDAwMDAwMDAwMDAwMDAwMDAwMDFCOEZBMTZERkFCOUFDQTE2QjZCM1wiLFwiMVwiLFwiM0I0QzM4MkNFMzdBQTE5MkE0MDE5RTc2MzAzNkY0RjVERDREN0VCQlwiLFwiOTM4Q0Y5MzUzMThGRENFRDZCQzI4Mjg2NTMxNzMzQzNGMDNDNEZFRVwiLFtdLFwiXCIsXCJzZWNwMTYwazEgOiBTRUNHIGN1cnZlIG92ZXIgYSAxNjAgYml0IHByaW1lIGZpZWxkXCIpO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDE2MHIxXCIsMTYwLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY3RkZGRkZGRlwiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY3RkZGRkZGQ1wiLFwiMUM5N0JFRkM1NEJEN0E4QjY1QUNGODlGODFENEQ0QURDNTY1RkE0NVwiLFwiMDEwMDAwMDAwMDAwMDAwMDAwMDAwMUY0QzhGOTI3QUVEM0NBNzUyMjU3XCIsXCIxXCIsXCI0QTk2QjU2ODhFRjU3MzI4NDY2NDY5ODk2OEMzOEJCOTEzQ0JGQzgyXCIsXCIyM0E2Mjg1NTMxNjg5NDdENTlEQ0M5MTIwNDIzNTEzNzdBQzVGQjMyXCIsW10sXCJcIixcInNlY3AxNjByMSA6IFNFQ0cgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGRcIik7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMTkyazFcIiwxOTIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkVFMzdcIixcIjBcIixcIjNcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRTI2RjJGQzE3MEY2OTQ2NkE3NERFRkQ4RFwiLFwiMVwiLFwiREI0RkYxMEVDMDU3RTlBRTI2QjA3RDAyODBCN0Y0MzQxREE1RDFCMUVBRTA2QzdEXCIsXCI5QjJGMkY2RDlDNTYyOEE3ODQ0MTYzRDAxNUJFODYzNDQwODJBQTg4RDk1RTJGOURcIixbXSk7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMTkycjFcIiwxOTIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRkZGRkZcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZGRkZGQ1wiLFwiNjQyMTA1MTlFNTlDODBFNzBGQTdFOUFCNzIyNDMwNDlGRUI4REVFQ0MxNDZCOUIxXCIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY5OURFRjgzNjE0NkJDOUIxQjREMjI4MzFcIixcIjFcIixcIjE4OERBODBFQjAzMDkwRjY3Q0JGMjBFQjQzQTE4ODAwRjRGRjBBRkQ4MkZGMTAxMlwiLFwiMDcxOTJCOTVGRkM4REE3ODYzMTAxMUVENkIyNENERDU3M0Y5NzdBMTFFNzk0ODExXCIsW10pO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDIyNHIxXCIsMjI0LFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFXCIsXCJCNDA1MEE4NTBDMDRCM0FCRjU0MTMyNTY1MDQ0QjBCN0Q3QkZEOEJBMjcwQjM5NDMyMzU1RkZCNFwiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjE2QTJFMEI4RjAzRTEzREQyOTQ1NUM1QzJBM0RcIixcIjFcIixcIkI3MEUwQ0JENkJCNEJGN0YzMjEzOTBCOTRBMDNDMUQzNTZDMjExMjIzNDMyODBENjExNUMxRDIxXCIsXCJCRDM3NjM4OEI1RjcyM0ZCNEMyMkRGRTZDRDQzNzVBMDVBMDc0NzY0NDRENTgxOTk4NTAwN0UzNFwiLFtdKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3AyNTZrMVwiLDI1NixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZDMkZcIixcIjBcIixcIjdcIixcIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFQkFBRURDRTZBRjQ4QTAzQkJGRDI1RThDRDAzNjQxNDFcIixcIjFcIixcIjc5QkU2NjdFRjlEQ0JCQUM1NUEwNjI5NUNFODcwQjA3MDI5QkZDREIyRENFMjhEOTU5RjI4MTVCMTZGODE3OThcIixcIjQ4M0FEQTc3MjZBM0M0NjU1REE0RkJGQzBFMTEwOEE4RkQxN0I0NDhBNjg1NTQxOTlDNDdEMDhGRkIxMEQ0QjhcIixbXSk7S0pVUi5jcnlwdG8uRUNQYXJhbWV0ZXJEQi5yZWdpc3QoXCJzZWNwMjU2cjFcIiwyNTYsXCJGRkZGRkZGRjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGXCIsXCJGRkZGRkZGRjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDXCIsXCI1QUM2MzVEOEFBM0E5M0U3QjNFQkJENTU3Njk4ODZCQzY1MUQwNkIwQ0M1M0IwRjYzQkNFM0MzRTI3RDI2MDRCXCIsXCJGRkZGRkZGRjAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkJDRTZGQUFEQTcxNzlFODRGM0I5Q0FDMkZDNjMyNTUxXCIsXCIxXCIsXCI2QjE3RDFGMkUxMkM0MjQ3RjhCQ0U2RTU2M0E0NDBGMjc3MDM3RDgxMkRFQjMzQTBGNEExMzk0NUQ4OThDMjk2XCIsXCI0RkUzNDJFMkZFMUE3RjlCOEVFN0VCNEE3QzBGOUUxNjJCQ0UzMzU3NkIzMTVFQ0VDQkI2NDA2ODM3QkY1MUY1XCIsW1wiTklTVCBQLTI1NlwiLFwiUC0yNTZcIixcInByaW1lMjU2djFcIl0pO0tKVVIuY3J5cHRvLkVDUGFyYW1ldGVyREIucmVnaXN0KFwic2VjcDM4NHIxXCIsMzg0LFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGXCIsXCJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkNcIixcIkIzMzEyRkE3RTIzRUU3RTQ5ODhFMDU2QkUzRjgyRDE5MTgxRDlDNkVGRTgxNDExMjAzMTQwODhGNTAxMzg3NUFDNjU2Mzk4RDhBMkVEMTlEMkE4NUM4RUREM0VDMkFFRlwiLFwiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQzc2MzREODFGNDM3MkRERjU4MUEwREIyNDhCMEE3N0FFQ0VDMTk2QUNDQzUyOTczXCIsXCIxXCIsXCJBQTg3Q0EyMkJFOEIwNTM3OEVCMUM3MUVGMzIwQUQ3NDZFMUQzQjYyOEJBNzlCOTg1OUY3NDFFMDgyNTQyQTM4NTUwMkYyNURCRjU1Mjk2QzNBNTQ1RTM4NzI3NjBBQjdcIixcIjM2MTdkZTRhOTYyNjJjNmY1ZDllOThiZjkyOTJkYzI5ZjhmNDFkYmQyODlhMTQ3Y2U5ZGEzMTEzYjVmMGI4YzAwYTYwYjFjZTFkN2U4MTlkN2E0MzFkN2M5MGVhMGU1ZlwiLFtcIk5JU1QgUC0zODRcIixcIlAtMzg0XCJdKTtLSlVSLmNyeXB0by5FQ1BhcmFtZXRlckRCLnJlZ2lzdChcInNlY3A1MjFyMVwiLDUyMSxcIjFGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGXCIsXCIxRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ1wiLFwiMDUxOTUzRUI5NjE4RTFDOUExRjkyOUEyMUEwQjY4NTQwRUVBMkRBNzI1Qjk5QjMxNUYzQjhCNDg5OTE4RUYxMDlFMTU2MTkzOTUxRUM3RTkzN0IxNjUyQzBCRDNCQjFCRjA3MzU3M0RGODgzRDJDMzRGMUVGNDUxRkQ0NkI1MDNGMDBcIixcIjFGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkE1MTg2ODc4M0JGMkY5NjZCN0ZDQzAxNDhGNzA5QTVEMDNCQjVDOUI4ODk5QzQ3QUVCQjZGQjcxRTkxMzg2NDA5XCIsXCIxXCIsXCJDNjg1OEUwNkI3MDQwNEU5Q0Q5RTNFQ0I2NjIzOTVCNDQyOUM2NDgxMzkwNTNGQjUyMUY4MjhBRjYwNkI0RDNEQkFBMTRCNUU3N0VGRTc1OTI4RkUxREMxMjdBMkZGQThERTMzNDhCM0MxODU2QTQyOUJGOTdFN0UzMUMyRTVCRDY2XCIsXCIwMTE4MzkyOTZhNzg5YTNiYzAwNDVjOGE1ZmI0MmM3ZDFiZDk5OGY1NDQ0OTU3OWI0NDY4MTdhZmJkMTcyNzNlNjYyYzk3ZWU3Mjk5NWVmNDI2NDBjNTUwYjkwMTNmYWQwNzYxMzUzYzcwODZhMjcyYzI0MDg4YmU5NDc2OWZkMTY2NTBcIixbXCJOSVNUIFAtNTIxXCIsXCJQLTUyMVwiXSk7XG52YXIgS0VZVVRJTD1mdW5jdGlvbigpe3ZhciBkPWZ1bmN0aW9uKHAscixxKXtyZXR1cm4gayhDcnlwdG9KUy5BRVMscCxyLHEpfTt2YXIgZT1mdW5jdGlvbihwLHIscSl7cmV0dXJuIGsoQ3J5cHRvSlMuVHJpcGxlREVTLHAscixxKX07dmFyIGE9ZnVuY3Rpb24ocCxyLHEpe3JldHVybiBrKENyeXB0b0pTLkRFUyxwLHIscSl9O3ZhciBrPWZ1bmN0aW9uKHMseCx1LHEpe3ZhciByPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoeCk7dmFyIHc9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh1KTt2YXIgcD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHEpO3ZhciB0PXt9O3Qua2V5PXc7dC5pdj1wO3QuY2lwaGVydGV4dD1yO3ZhciB2PXMuZGVjcnlwdCh0LHcse2l2OnB9KTtyZXR1cm4gQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkodil9O3ZhciBsPWZ1bmN0aW9uKHAscixxKXtyZXR1cm4gZyhDcnlwdG9KUy5BRVMscCxyLHEpfTt2YXIgbz1mdW5jdGlvbihwLHIscSl7cmV0dXJuIGcoQ3J5cHRvSlMuVHJpcGxlREVTLHAscixxKX07dmFyIGY9ZnVuY3Rpb24ocCxyLHEpe3JldHVybiBnKENyeXB0b0pTLkRFUyxwLHIscSl9O3ZhciBnPWZ1bmN0aW9uKHQseSx2LHEpe3ZhciBzPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoeSk7dmFyIHg9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh2KTt2YXIgcD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHEpO3ZhciB3PXQuZW5jcnlwdChzLHgse2l2OnB9KTt2YXIgcj1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHcudG9TdHJpbmcoKSk7dmFyIHU9Q3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkocik7cmV0dXJuIHV9O3ZhciBpPXtcIkFFUy0yNTYtQ0JDXCI6e3Byb2M6ZCxlcHJvYzpsLGtleWxlbjozMixpdmxlbjoxNn0sXCJBRVMtMTkyLUNCQ1wiOntwcm9jOmQsZXByb2M6bCxrZXlsZW46MjQsaXZsZW46MTZ9LFwiQUVTLTEyOC1DQkNcIjp7cHJvYzpkLGVwcm9jOmwsa2V5bGVuOjE2LGl2bGVuOjE2fSxcIkRFUy1FREUzLUNCQ1wiOntwcm9jOmUsZXByb2M6byxrZXlsZW46MjQsaXZsZW46OH0sXCJERVMtQ0JDXCI6e3Byb2M6YSxlcHJvYzpmLGtleWxlbjo4LGl2bGVuOjh9fTt2YXIgYz1mdW5jdGlvbihwKXtyZXR1cm4gaVtwXVtcInByb2NcIl19O3ZhciBtPWZ1bmN0aW9uKHApe3ZhciByPUNyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKHApO3ZhciBxPUNyeXB0b0pTLmVuYy5IZXguc3RyaW5naWZ5KHIpO3JldHVybiBxfTt2YXIgbj1mdW5jdGlvbih2KXt2YXIgdz17fTt2YXIgcT12Lm1hdGNoKG5ldyBSZWdFeHAoXCJERUstSW5mbzogKFteLF0rKSwoWzAtOUEtRmEtZl0rKVwiLFwibVwiKSk7aWYocSl7dy5jaXBoZXI9cVsxXTt3Lml2c2FsdD1xWzJdfXZhciBwPXYubWF0Y2gobmV3IFJlZ0V4cChcIi0tLS0tQkVHSU4gKFtBLVpdKykgUFJJVkFURSBLRVktLS0tLVwiKSk7aWYocCl7dy50eXBlPXBbMV19dmFyIHU9LTE7dmFyIHg9MDtpZih2LmluZGV4T2YoXCJcXHJcXG5cXHJcXG5cIikhPS0xKXt1PXYuaW5kZXhPZihcIlxcclxcblxcclxcblwiKTt4PTJ9aWYodi5pbmRleE9mKFwiXFxuXFxuXCIpIT0tMSl7dT12LmluZGV4T2YoXCJcXG5cXG5cIik7eD0xfXZhciB0PXYuaW5kZXhPZihcIi0tLS0tRU5EXCIpO2lmKHUhPS0xJiZ0IT0tMSl7dmFyIHI9di5zdWJzdHJpbmcodSt4KjIsdC14KTtyPXIucmVwbGFjZSgvXFxzKy9nLFwiXCIpO3cuZGF0YT1yfXJldHVybiB3fTt2YXIgaj1mdW5jdGlvbihxLHkscCl7dmFyIHY9cC5zdWJzdHJpbmcoMCwxNik7dmFyIHQ9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh2KTt2YXIgcj1DcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh5KTt2YXIgdT1pW3FdW1wia2V5bGVuXCJdK2lbcV1bXCJpdmxlblwiXTt2YXIgeD1cIlwiO3ZhciB3PW51bGw7Zm9yKDs7KXt2YXIgcz1DcnlwdG9KUy5hbGdvLk1ENS5jcmVhdGUoKTtpZih3IT1udWxsKXtzLnVwZGF0ZSh3KX1zLnVwZGF0ZShyKTtzLnVwZGF0ZSh0KTt3PXMuZmluYWxpemUoKTt4PXgrQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkodyk7aWYoeC5sZW5ndGg+PXUqMil7YnJlYWt9fXZhciB6PXt9O3oua2V5aGV4PXguc3Vic3RyKDAsaVtxXVtcImtleWxlblwiXSoyKTt6Lml2aGV4PXguc3Vic3RyKGlbcV1bXCJrZXlsZW5cIl0qMixpW3FdW1wiaXZsZW5cIl0qMik7cmV0dXJuIHp9O3ZhciBiPWZ1bmN0aW9uKHAsdixyLHcpe3ZhciBzPUNyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UocCk7dmFyIHE9Q3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkocyk7dmFyIHU9aVt2XVtcInByb2NcIl07dmFyIHQ9dShxLHIsdyk7cmV0dXJuIHR9O3ZhciBoPWZ1bmN0aW9uKHAscyxxLHUpe3ZhciByPWlbc11bXCJlcHJvY1wiXTt2YXIgdD1yKHAscSx1KTtyZXR1cm4gdH07cmV0dXJue3ZlcnNpb246XCIxLjAuMFwiLHBhcnNlUEtDUzVQRU06ZnVuY3Rpb24ocCl7cmV0dXJuIG4ocCl9LGdldEtleUFuZFVudXNlZEl2QnlQYXNzY29kZUFuZEl2c2FsdDpmdW5jdGlvbihxLHAscil7cmV0dXJuIGoocSxwLHIpfSxkZWNyeXB0S2V5QjY0OmZ1bmN0aW9uKHAscixxLHMpe3JldHVybiBiKHAscixxLHMpfSxnZXREZWNyeXB0ZWRLZXlIZXg6ZnVuY3Rpb24oeSx4KXt2YXIgcT1uKHkpO3ZhciB0PXEudHlwZTt2YXIgcj1xLmNpcGhlcjt2YXIgcD1xLml2c2FsdDt2YXIgcz1xLmRhdGE7dmFyIHc9aihyLHgscCk7dmFyIHY9dy5rZXloZXg7dmFyIHU9YihzLHIsdixwKTtyZXR1cm4gdX0sZ2V0RW5jcnlwdGVkUEtDUzVQRU1Gcm9tUHJ2S2V5SGV4OmZ1bmN0aW9uKHgscyxBLHQscil7dmFyIHA9XCJcIjtpZih0eXBlb2YgdD09XCJ1bmRlZmluZWRcInx8dD09bnVsbCl7dD1cIkFFUy0yNTYtQ0JDXCJ9aWYodHlwZW9mIGlbdF09PVwidW5kZWZpbmVkXCIpe3Rocm93XCJLRVlVVElMIHVuc3VwcG9ydGVkIGFsZ29yaXRobTogXCIrdH1pZih0eXBlb2Ygcj09XCJ1bmRlZmluZWRcInx8cj09bnVsbCl7dmFyIHY9aVt0XVtcIml2bGVuXCJdO3ZhciB1PW0odik7cj11LnRvVXBwZXJDYXNlKCl9dmFyIHo9aih0LEEscik7dmFyIHk9ei5rZXloZXg7dmFyIHc9aChzLHQseSxyKTt2YXIgcT13LnJlcGxhY2UoLyguezY0fSkvZyxcIiQxXFxyXFxuXCIpO3ZhciBwPVwiLS0tLS1CRUdJTiBcIit4K1wiIFBSSVZBVEUgS0VZLS0tLS1cXHJcXG5cIjtwKz1cIlByb2MtVHlwZTogNCxFTkNSWVBURURcXHJcXG5cIjtwKz1cIkRFSy1JbmZvOiBcIit0K1wiLFwiK3IrXCJcXHJcXG5cIjtwKz1cIlxcclxcblwiO3ArPXE7cCs9XCJcXHJcXG4tLS0tLUVORCBcIit4K1wiIFBSSVZBVEUgS0VZLS0tLS1cXHJcXG5cIjtyZXR1cm4gcH0scGFyc2VIZXhPZkVuY3J5cHRlZFBLQ1M4OmZ1bmN0aW9uKHkpe3ZhciBCPUFTTjFIRVg7dmFyIHo9Qi5nZXRDaGlsZElkeDt2YXIgdz1CLmdldFY7dmFyIHQ9e307dmFyIHI9eih5LDApO2lmKHIubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdDogU0VRVUVOQ0UoMCkuaXRlbXMgIT0gMjogXCIrci5sZW5ndGh9dC5jaXBoZXJ0ZXh0PXcoeSxyWzFdKTt2YXIgQT16KHksclswXSk7aWYoQS5sZW5ndGghPTIpe3Rocm93XCJtYWxmb3JtZWQgZm9ybWF0OiBTRVFVRU5DRSgwLjApLml0ZW1zICE9IDI6IFwiK0EubGVuZ3RofWlmKHcoeSxBWzBdKSE9XCIyYTg2NDg4NmY3MGQwMTA1MGRcIil7dGhyb3dcInRoaXMgb25seSBzdXBwb3J0cyBwa2NzNVBCRVMyXCJ9dmFyIHA9eih5LEFbMV0pO2lmKEEubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdDogU0VRVUVOQ0UoMC4wLjEpLml0ZW1zICE9IDI6IFwiK3AubGVuZ3RofXZhciBxPXooeSxwWzFdKTtpZihxLmxlbmd0aCE9Mil7dGhyb3dcIm1hbGZvcm1lZCBmb3JtYXQ6IFNFUVVFTkNFKDAuMC4xLjEpLml0ZW1zICE9IDI6IFwiK3EubGVuZ3RofWlmKHcoeSxxWzBdKSE9XCIyYTg2NDg4NmY3MGQwMzA3XCIpe3Rocm93XCJ0aGlzIG9ubHkgc3VwcG9ydHMgVHJpcGxlREVTXCJ9dC5lbmNyeXB0aW9uU2NoZW1lQWxnPVwiVHJpcGxlREVTXCI7dC5lbmNyeXB0aW9uU2NoZW1lSVY9dyh5LHFbMV0pO3ZhciBzPXooeSxwWzBdKTtpZihzLmxlbmd0aCE9Mil7dGhyb3dcIm1hbGZvcm1lZCBmb3JtYXQ6IFNFUVVFTkNFKDAuMC4xLjApLml0ZW1zICE9IDI6IFwiK3MubGVuZ3RofWlmKHcoeSxzWzBdKSE9XCIyYTg2NDg4NmY3MGQwMTA1MGNcIil7dGhyb3dcInRoaXMgb25seSBzdXBwb3J0cyBwa2NzNVBCS0RGMlwifXZhciB4PXooeSxzWzFdKTtpZih4Lmxlbmd0aDwyKXt0aHJvd1wibWFsZm9ybWVkIGZvcm1hdDogU0VRVUVOQ0UoMC4wLjEuMC4xKS5pdGVtcyA8IDI6IFwiK3gubGVuZ3RofXQucGJrZGYyU2FsdD13KHkseFswXSk7dmFyIHU9dyh5LHhbMV0pO3RyeXt0LnBia2RmMkl0ZXI9cGFyc2VJbnQodSwxNil9Y2F0Y2godil7dGhyb3dcIm1hbGZvcm1lZCBmb3JtYXQgcGJrZGYySXRlcjogXCIrdX1yZXR1cm4gdH0sZ2V0UEJLREYyS2V5SGV4RnJvbVBhcmFtOmZ1bmN0aW9uKHUscCl7dmFyIHQ9Q3J5cHRvSlMuZW5jLkhleC5wYXJzZSh1LnBia2RmMlNhbHQpO3ZhciBxPXUucGJrZGYySXRlcjt2YXIgcz1DcnlwdG9KUy5QQktERjIocCx0LHtrZXlTaXplOjE5Mi8zMixpdGVyYXRpb25zOnF9KTt2YXIgcj1DcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeShzKTtyZXR1cm4gcn0sX2dldFBsYWluUEtDUzhIZXhGcm9tRW5jcnlwdGVkUEtDUzhQRU06ZnVuY3Rpb24oeCx5KXt2YXIgcj1wZW10b2hleCh4LFwiRU5DUllQVEVEIFBSSVZBVEUgS0VZXCIpO3ZhciBwPXRoaXMucGFyc2VIZXhPZkVuY3J5cHRlZFBLQ1M4KHIpO3ZhciB1PUtFWVVUSUwuZ2V0UEJLREYyS2V5SGV4RnJvbVBhcmFtKHAseSk7dmFyIHY9e307di5jaXBoZXJ0ZXh0PUNyeXB0b0pTLmVuYy5IZXgucGFyc2UocC5jaXBoZXJ0ZXh0KTt2YXIgdD1DcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHUpO3ZhciBzPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UocC5lbmNyeXB0aW9uU2NoZW1lSVYpO3ZhciB3PUNyeXB0b0pTLlRyaXBsZURFUy5kZWNyeXB0KHYsdCx7aXY6c30pO3ZhciBxPUNyeXB0b0pTLmVuYy5IZXguc3RyaW5naWZ5KHcpO3JldHVybiBxfSxnZXRLZXlGcm9tRW5jcnlwdGVkUEtDUzhQRU06ZnVuY3Rpb24ocyxxKXt2YXIgcD10aGlzLl9nZXRQbGFpblBLQ1M4SGV4RnJvbUVuY3J5cHRlZFBLQ1M4UEVNKHMscSk7dmFyIHI9dGhpcy5nZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhIZXgocCk7cmV0dXJuIHJ9LHBhcnNlUGxhaW5Qcml2YXRlUEtDUzhIZXg6ZnVuY3Rpb24ocyl7dmFyIHY9QVNOMUhFWDt2YXIgdT12LmdldENoaWxkSWR4O3ZhciB0PXYuZ2V0Vjt2YXIgcT17fTtxLmFsZ3BhcmFtPW51bGw7aWYocy5zdWJzdHIoMCwyKSE9XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIHBsYWluIFBLQ1M4IHByaXZhdGUga2V5KGNvZGU6MDAxKVwifXZhciByPXUocywwKTtpZihyLmxlbmd0aCE9Myl7dGhyb3dcIm1hbGZvcm1lZCBwbGFpbiBQS0NTOCBwcml2YXRlIGtleShjb2RlOjAwMilcIn1pZihzLnN1YnN0cihyWzFdLDIpIT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHJpdmF0ZSBrZXkoY29kZTowMDMpXCJ9dmFyIHA9dShzLHJbMV0pO2lmKHAubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHByaXZhdGUga2V5KGNvZGU6MDA0KVwifWlmKHMuc3Vic3RyKHBbMF0sMikhPVwiMDZcIil7dGhyb3dcIm1hbGZvcm1lZCBQS0NTOCBwcml2YXRlIGtleShjb2RlOjAwNSlcIn1xLmFsZ29pZD10KHMscFswXSk7aWYocy5zdWJzdHIocFsxXSwyKT09XCIwNlwiKXtxLmFsZ3BhcmFtPXQocyxwWzFdKX1pZihzLnN1YnN0cihyWzJdLDIpIT1cIjA0XCIpe3Rocm93XCJtYWxmb3JtZWQgUEtDUzggcHJpdmF0ZSBrZXkoY29kZTowMDYpXCJ9cS5rZXlpZHg9di5nZXRWaWR4KHMsclsyXSk7cmV0dXJuIHF9LGdldEtleUZyb21QbGFpblByaXZhdGVQS0NTOFBFTTpmdW5jdGlvbihxKXt2YXIgcD1wZW10b2hleChxLFwiUFJJVkFURSBLRVlcIik7dmFyIHI9dGhpcy5nZXRLZXlGcm9tUGxhaW5Qcml2YXRlUEtDUzhIZXgocCk7cmV0dXJuIHJ9LGdldEtleUZyb21QbGFpblByaXZhdGVQS0NTOEhleDpmdW5jdGlvbihwKXt2YXIgcT10aGlzLnBhcnNlUGxhaW5Qcml2YXRlUEtDUzhIZXgocCk7dmFyIHI7aWYocS5hbGdvaWQ9PVwiMmE4NjQ4ODZmNzBkMDEwMTAxXCIpe3I9bmV3IFJTQUtleSgpfWVsc2V7aWYocS5hbGdvaWQ9PVwiMmE4NjQ4Y2UzODA0MDFcIil7cj1uZXcgS0pVUi5jcnlwdG8uRFNBKCl9ZWxzZXtpZihxLmFsZ29pZD09XCIyYTg2NDhjZTNkMDIwMVwiKXtyPW5ldyBLSlVSLmNyeXB0by5FQ0RTQSgpfWVsc2V7dGhyb3dcInVuc3VwcG9ydGVkIHByaXZhdGUga2V5IGFsZ29yaXRobVwifX19ci5yZWFkUEtDUzhQcnZLZXlIZXgocCk7cmV0dXJuIHJ9LF9nZXRLZXlGcm9tUHVibGljUEtDUzhIZXg6ZnVuY3Rpb24ocSl7dmFyIHA7dmFyIHI9QVNOMUhFWC5nZXRWYnlMaXN0KHEsMCxbMCwwXSxcIjA2XCIpO2lmKHI9PT1cIjJhODY0ODg2ZjcwZDAxMDEwMVwiKXtwPW5ldyBSU0FLZXkoKX1lbHNle2lmKHI9PT1cIjJhODY0OGNlMzgwNDAxXCIpe3A9bmV3IEtKVVIuY3J5cHRvLkRTQSgpfWVsc2V7aWYocj09PVwiMmE4NjQ4Y2UzZDAyMDFcIil7cD1uZXcgS0pVUi5jcnlwdG8uRUNEU0EoKX1lbHNle3Rocm93XCJ1bnN1cHBvcnRlZCBQS0NTIzggcHVibGljIGtleSBoZXhcIn19fXAucmVhZFBLQ1M4UHViS2V5SGV4KHEpO3JldHVybiBwfSxwYXJzZVB1YmxpY1Jhd1JTQUtleUhleDpmdW5jdGlvbihyKXt2YXIgdT1BU04xSEVYO3ZhciB0PXUuZ2V0Q2hpbGRJZHg7dmFyIHM9dS5nZXRWO3ZhciBwPXt9O2lmKHIuc3Vic3RyKDAsMikhPVwiMzBcIil7dGhyb3dcIm1hbGZvcm1lZCBSU0Ega2V5KGNvZGU6MDAxKVwifXZhciBxPXQociwwKTtpZihxLmxlbmd0aCE9Mil7dGhyb3dcIm1hbGZvcm1lZCBSU0Ega2V5KGNvZGU6MDAyKVwifWlmKHIuc3Vic3RyKHFbMF0sMikhPVwiMDJcIil7dGhyb3dcIm1hbGZvcm1lZCBSU0Ega2V5KGNvZGU6MDAzKVwifXAubj1zKHIscVswXSk7aWYoci5zdWJzdHIocVsxXSwyKSE9XCIwMlwiKXt0aHJvd1wibWFsZm9ybWVkIFJTQSBrZXkoY29kZTowMDQpXCJ9cC5lPXMocixxWzFdKTtyZXR1cm4gcH0scGFyc2VQdWJsaWNQS0NTOEhleDpmdW5jdGlvbih0KXt2YXIgdj1BU04xSEVYO3ZhciB1PXYuZ2V0Q2hpbGRJZHg7dmFyIHM9di5nZXRWO3ZhciBxPXt9O3EuYWxncGFyYW09bnVsbDt2YXIgcj11KHQsMCk7aWYoci5sZW5ndGghPTIpe3Rocm93XCJvdXRlciBERVJTZXF1ZW5jZSBzaGFsbCBoYXZlIDIgZWxlbWVudHM6IFwiK3IubGVuZ3RofXZhciB3PXJbMF07aWYodC5zdWJzdHIodywyKSE9XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHB1YmxpYyBrZXkoY29kZTowMDEpXCJ9dmFyIHA9dSh0LHcpO2lmKHAubGVuZ3RoIT0yKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHB1YmxpYyBrZXkoY29kZTowMDIpXCJ9aWYodC5zdWJzdHIocFswXSwyKSE9XCIwNlwiKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1M4IHB1YmxpYyBrZXkoY29kZTowMDMpXCJ9cS5hbGdvaWQ9cyh0LHBbMF0pO2lmKHQuc3Vic3RyKHBbMV0sMik9PVwiMDZcIil7cS5hbGdwYXJhbT1zKHQscFsxXSl9ZWxzZXtpZih0LnN1YnN0cihwWzFdLDIpPT1cIjMwXCIpe3EuYWxncGFyYW09e307cS5hbGdwYXJhbS5wPXYuZ2V0VmJ5TGlzdCh0LHBbMV0sWzBdLFwiMDJcIik7cS5hbGdwYXJhbS5xPXYuZ2V0VmJ5TGlzdCh0LHBbMV0sWzFdLFwiMDJcIik7cS5hbGdwYXJhbS5nPXYuZ2V0VmJ5TGlzdCh0LHBbMV0sWzJdLFwiMDJcIil9fWlmKHQuc3Vic3RyKHJbMV0sMikhPVwiMDNcIil7dGhyb3dcIm1hbGZvcm1lZCBQS0NTOCBwdWJsaWMga2V5KGNvZGU6MDA0KVwifXEua2V5PXModCxyWzFdKS5zdWJzdHIoMik7cmV0dXJuIHF9LH19KCk7S0VZVVRJTC5nZXRLZXk9ZnVuY3Rpb24obCxrLG4pe3ZhciBHPUFTTjFIRVgsTD1HLmdldENoaWxkSWR4LHY9Ry5nZXRWLGQ9Ry5nZXRWYnlMaXN0LGM9S0pVUi5jcnlwdG8saT1jLkVDRFNBLEM9Yy5EU0Esdz1SU0FLZXksTT1wZW10b2hleCxGPUtFWVVUSUw7aWYodHlwZW9mIHchPVwidW5kZWZpbmVkXCImJmwgaW5zdGFuY2VvZiB3KXtyZXR1cm4gbH1pZih0eXBlb2YgaSE9XCJ1bmRlZmluZWRcIiYmbCBpbnN0YW5jZW9mIGkpe3JldHVybiBsfWlmKHR5cGVvZiBDIT1cInVuZGVmaW5lZFwiJiZsIGluc3RhbmNlb2YgQyl7cmV0dXJuIGx9aWYobC5jdXJ2ZSE9PXVuZGVmaW5lZCYmbC54eSE9PXVuZGVmaW5lZCYmbC5kPT09dW5kZWZpbmVkKXtyZXR1cm4gbmV3IGkoe3B1YjpsLnh5LGN1cnZlOmwuY3VydmV9KX1pZihsLmN1cnZlIT09dW5kZWZpbmVkJiZsLmQhPT11bmRlZmluZWQpe3JldHVybiBuZXcgaSh7cHJ2OmwuZCxjdXJ2ZTpsLmN1cnZlfSl9aWYobC5rdHk9PT11bmRlZmluZWQmJmwubiE9PXVuZGVmaW5lZCYmbC5lIT09dW5kZWZpbmVkJiZsLmQ9PT11bmRlZmluZWQpe3ZhciBQPW5ldyB3KCk7UC5zZXRQdWJsaWMobC5uLGwuZSk7cmV0dXJuIFB9aWYobC5rdHk9PT11bmRlZmluZWQmJmwubiE9PXVuZGVmaW5lZCYmbC5lIT09dW5kZWZpbmVkJiZsLmQhPT11bmRlZmluZWQmJmwucCE9PXVuZGVmaW5lZCYmbC5xIT09dW5kZWZpbmVkJiZsLmRwIT09dW5kZWZpbmVkJiZsLmRxIT09dW5kZWZpbmVkJiZsLmNvIT09dW5kZWZpbmVkJiZsLnFpPT09dW5kZWZpbmVkKXt2YXIgUD1uZXcgdygpO1Auc2V0UHJpdmF0ZUV4KGwubixsLmUsbC5kLGwucCxsLnEsbC5kcCxsLmRxLGwuY28pO3JldHVybiBQfWlmKGwua3R5PT09dW5kZWZpbmVkJiZsLm4hPT11bmRlZmluZWQmJmwuZSE9PXVuZGVmaW5lZCYmbC5kIT09dW5kZWZpbmVkJiZsLnA9PT11bmRlZmluZWQpe3ZhciBQPW5ldyB3KCk7UC5zZXRQcml2YXRlKGwubixsLmUsbC5kKTtyZXR1cm4gUH1pZihsLnAhPT11bmRlZmluZWQmJmwucSE9PXVuZGVmaW5lZCYmbC5nIT09dW5kZWZpbmVkJiZsLnkhPT11bmRlZmluZWQmJmwueD09PXVuZGVmaW5lZCl7dmFyIFA9bmV3IEMoKTtQLnNldFB1YmxpYyhsLnAsbC5xLGwuZyxsLnkpO3JldHVybiBQfWlmKGwucCE9PXVuZGVmaW5lZCYmbC5xIT09dW5kZWZpbmVkJiZsLmchPT11bmRlZmluZWQmJmwueSE9PXVuZGVmaW5lZCYmbC54IT09dW5kZWZpbmVkKXt2YXIgUD1uZXcgQygpO1Auc2V0UHJpdmF0ZShsLnAsbC5xLGwuZyxsLnksbC54KTtyZXR1cm4gUH1pZihsLmt0eT09PVwiUlNBXCImJmwubiE9PXVuZGVmaW5lZCYmbC5lIT09dW5kZWZpbmVkJiZsLmQ9PT11bmRlZmluZWQpe3ZhciBQPW5ldyB3KCk7UC5zZXRQdWJsaWMoYjY0dXRvaGV4KGwubiksYjY0dXRvaGV4KGwuZSkpO3JldHVybiBQfWlmKGwua3R5PT09XCJSU0FcIiYmbC5uIT09dW5kZWZpbmVkJiZsLmUhPT11bmRlZmluZWQmJmwuZCE9PXVuZGVmaW5lZCYmbC5wIT09dW5kZWZpbmVkJiZsLnEhPT11bmRlZmluZWQmJmwuZHAhPT11bmRlZmluZWQmJmwuZHEhPT11bmRlZmluZWQmJmwucWkhPT11bmRlZmluZWQpe3ZhciBQPW5ldyB3KCk7UC5zZXRQcml2YXRlRXgoYjY0dXRvaGV4KGwubiksYjY0dXRvaGV4KGwuZSksYjY0dXRvaGV4KGwuZCksYjY0dXRvaGV4KGwucCksYjY0dXRvaGV4KGwucSksYjY0dXRvaGV4KGwuZHApLGI2NHV0b2hleChsLmRxKSxiNjR1dG9oZXgobC5xaSkpO3JldHVybiBQfWlmKGwua3R5PT09XCJSU0FcIiYmbC5uIT09dW5kZWZpbmVkJiZsLmUhPT11bmRlZmluZWQmJmwuZCE9PXVuZGVmaW5lZCl7dmFyIFA9bmV3IHcoKTtQLnNldFByaXZhdGUoYjY0dXRvaGV4KGwubiksYjY0dXRvaGV4KGwuZSksYjY0dXRvaGV4KGwuZCkpO3JldHVybiBQfWlmKGwua3R5PT09XCJFQ1wiJiZsLmNydiE9PXVuZGVmaW5lZCYmbC54IT09dW5kZWZpbmVkJiZsLnkhPT11bmRlZmluZWQmJmwuZD09PXVuZGVmaW5lZCl7dmFyIGo9bmV3IGkoe2N1cnZlOmwuY3J2fSk7dmFyIHQ9ai5lY3BhcmFtcy5rZXlsZW4vNDt2YXIgQj0oXCIwMDAwMDAwMDAwXCIrYjY0dXRvaGV4KGwueCkpLnNsaWNlKC10KTt2YXIgej0oXCIwMDAwMDAwMDAwXCIrYjY0dXRvaGV4KGwueSkpLnNsaWNlKC10KTt2YXIgdT1cIjA0XCIrQit6O2ouc2V0UHVibGljS2V5SGV4KHUpO3JldHVybiBqfWlmKGwua3R5PT09XCJFQ1wiJiZsLmNydiE9PXVuZGVmaW5lZCYmbC54IT09dW5kZWZpbmVkJiZsLnkhPT11bmRlZmluZWQmJmwuZCE9PXVuZGVmaW5lZCl7dmFyIGo9bmV3IGkoe2N1cnZlOmwuY3J2fSk7dmFyIHQ9ai5lY3BhcmFtcy5rZXlsZW4vNDt2YXIgQj0oXCIwMDAwMDAwMDAwXCIrYjY0dXRvaGV4KGwueCkpLnNsaWNlKC10KTt2YXIgej0oXCIwMDAwMDAwMDAwXCIrYjY0dXRvaGV4KGwueSkpLnNsaWNlKC10KTt2YXIgdT1cIjA0XCIrQit6O3ZhciBiPShcIjAwMDAwMDAwMDBcIitiNjR1dG9oZXgobC5kKSkuc2xpY2UoLXQpO2ouc2V0UHVibGljS2V5SGV4KHUpO2ouc2V0UHJpdmF0ZUtleUhleChiKTtyZXR1cm4gan1pZihuPT09XCJwa2NzNXBydlwiKXt2YXIgSj1sLEc9QVNOMUhFWCxOLFA7Tj1MKEosMCk7aWYoTi5sZW5ndGg9PT05KXtQPW5ldyB3KCk7UC5yZWFkUEtDUzVQcnZLZXlIZXgoSil9ZWxzZXtpZihOLmxlbmd0aD09PTYpe1A9bmV3IEMoKTtQLnJlYWRQS0NTNVBydktleUhleChKKX1lbHNle2lmKE4ubGVuZ3RoPjImJkouc3Vic3RyKE5bMV0sMik9PT1cIjA0XCIpe1A9bmV3IGkoKTtQLnJlYWRQS0NTNVBydktleUhleChKKX1lbHNle3Rocm93XCJ1bnN1cHBvcnRlZCBQS0NTIzEvNSBoZXhhZGVjaW1hbCBrZXlcIn19fXJldHVybiBQfWlmKG49PT1cInBrY3M4cHJ2XCIpe3ZhciBQPUYuZ2V0S2V5RnJvbVBsYWluUHJpdmF0ZVBLQ1M4SGV4KGwpO3JldHVybiBQfWlmKG49PT1cInBrY3M4cHViXCIpe3JldHVybiBGLl9nZXRLZXlGcm9tUHVibGljUEtDUzhIZXgobCl9aWYobj09PVwieDUwOXB1YlwiKXtyZXR1cm4gWDUwOS5nZXRQdWJsaWNLZXlGcm9tQ2VydEhleChsKX1pZihsLmluZGV4T2YoXCItRU5EIENFUlRJRklDQVRFLVwiLDApIT0tMXx8bC5pbmRleE9mKFwiLUVORCBYNTA5IENFUlRJRklDQVRFLVwiLDApIT0tMXx8bC5pbmRleE9mKFwiLUVORCBUUlVTVEVEIENFUlRJRklDQVRFLVwiLDApIT0tMSl7cmV0dXJuIFg1MDkuZ2V0UHVibGljS2V5RnJvbUNlcnRQRU0obCl9aWYobC5pbmRleE9mKFwiLUVORCBQVUJMSUMgS0VZLVwiKSE9LTEpe3ZhciBPPXBlbXRvaGV4KGwsXCJQVUJMSUMgS0VZXCIpO3JldHVybiBGLl9nZXRLZXlGcm9tUHVibGljUEtDUzhIZXgoTyl9aWYobC5pbmRleE9mKFwiLUVORCBSU0EgUFJJVkFURSBLRVktXCIpIT0tMSYmbC5pbmRleE9mKFwiNCxFTkNSWVBURURcIik9PS0xKXt2YXIgbT1NKGwsXCJSU0EgUFJJVkFURSBLRVlcIik7cmV0dXJuIEYuZ2V0S2V5KG0sbnVsbCxcInBrY3M1cHJ2XCIpfWlmKGwuaW5kZXhPZihcIi1FTkQgRFNBIFBSSVZBVEUgS0VZLVwiKSE9LTEmJmwuaW5kZXhPZihcIjQsRU5DUllQVEVEXCIpPT0tMSl7dmFyIEk9TShsLFwiRFNBIFBSSVZBVEUgS0VZXCIpO3ZhciBFPWQoSSwwLFsxXSxcIjAyXCIpO3ZhciBEPWQoSSwwLFsyXSxcIjAyXCIpO3ZhciBLPWQoSSwwLFszXSxcIjAyXCIpO3ZhciByPWQoSSwwLFs0XSxcIjAyXCIpO3ZhciBzPWQoSSwwLFs1XSxcIjAyXCIpO3ZhciBQPW5ldyBDKCk7UC5zZXRQcml2YXRlKG5ldyBCaWdJbnRlZ2VyKEUsMTYpLG5ldyBCaWdJbnRlZ2VyKEQsMTYpLG5ldyBCaWdJbnRlZ2VyKEssMTYpLG5ldyBCaWdJbnRlZ2VyKHIsMTYpLG5ldyBCaWdJbnRlZ2VyKHMsMTYpKTtyZXR1cm4gUH1pZihsLmluZGV4T2YoXCItRU5EIFBSSVZBVEUgS0VZLVwiKSE9LTEpe3JldHVybiBGLmdldEtleUZyb21QbGFpblByaXZhdGVQS0NTOFBFTShsKX1pZihsLmluZGV4T2YoXCItRU5EIFJTQSBQUklWQVRFIEtFWS1cIikhPS0xJiZsLmluZGV4T2YoXCI0LEVOQ1JZUFRFRFwiKSE9LTEpe3ZhciBvPUYuZ2V0RGVjcnlwdGVkS2V5SGV4KGwsayk7dmFyIEg9bmV3IFJTQUtleSgpO0gucmVhZFBLQ1M1UHJ2S2V5SGV4KG8pO3JldHVybiBIfWlmKGwuaW5kZXhPZihcIi1FTkQgRUMgUFJJVkFURSBLRVktXCIpIT0tMSYmbC5pbmRleE9mKFwiNCxFTkNSWVBURURcIikhPS0xKXt2YXIgST1GLmdldERlY3J5cHRlZEtleUhleChsLGspO3ZhciBQPWQoSSwwLFsxXSxcIjA0XCIpO3ZhciBmPWQoSSwwLFsyLDBdLFwiMDZcIik7dmFyIEE9ZChJLDAsWzMsMF0sXCIwM1wiKS5zdWJzdHIoMik7dmFyIGU9XCJcIjtpZihLSlVSLmNyeXB0by5PSUQub2lkaGV4Mm5hbWVbZl0hPT11bmRlZmluZWQpe2U9S0pVUi5jcnlwdG8uT0lELm9pZGhleDJuYW1lW2ZdfWVsc2V7dGhyb3dcInVuZGVmaW5lZCBPSUQoaGV4KSBpbiBLSlVSLmNyeXB0by5PSUQ6IFwiK2Z9dmFyIGo9bmV3IGkoe2N1cnZlOmV9KTtqLnNldFB1YmxpY0tleUhleChBKTtqLnNldFByaXZhdGVLZXlIZXgoUCk7ai5pc1B1YmxpYz1mYWxzZTtyZXR1cm4gan1pZihsLmluZGV4T2YoXCItRU5EIERTQSBQUklWQVRFIEtFWS1cIikhPS0xJiZsLmluZGV4T2YoXCI0LEVOQ1JZUFRFRFwiKSE9LTEpe3ZhciBJPUYuZ2V0RGVjcnlwdGVkS2V5SGV4KGwsayk7dmFyIEU9ZChJLDAsWzFdLFwiMDJcIik7dmFyIEQ9ZChJLDAsWzJdLFwiMDJcIik7dmFyIEs9ZChJLDAsWzNdLFwiMDJcIik7dmFyIHI9ZChJLDAsWzRdLFwiMDJcIik7dmFyIHM9ZChJLDAsWzVdLFwiMDJcIik7dmFyIFA9bmV3IEMoKTtQLnNldFByaXZhdGUobmV3IEJpZ0ludGVnZXIoRSwxNiksbmV3IEJpZ0ludGVnZXIoRCwxNiksbmV3IEJpZ0ludGVnZXIoSywxNiksbmV3IEJpZ0ludGVnZXIociwxNiksbmV3IEJpZ0ludGVnZXIocywxNikpO3JldHVybiBQfWlmKGwuaW5kZXhPZihcIi1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLVwiKSE9LTEpe3JldHVybiBGLmdldEtleUZyb21FbmNyeXB0ZWRQS0NTOFBFTShsLGspfXRocm93XCJub3Qgc3VwcG9ydGVkIGFyZ3VtZW50XCJ9O0tFWVVUSUwuZ2VuZXJhdGVLZXlwYWlyPWZ1bmN0aW9uKGEsYyl7aWYoYT09XCJSU0FcIil7dmFyIGI9Yzt2YXIgaD1uZXcgUlNBS2V5KCk7aC5nZW5lcmF0ZShiLFwiMTAwMDFcIik7aC5pc1ByaXZhdGU9dHJ1ZTtoLmlzUHVibGljPXRydWU7dmFyIGY9bmV3IFJTQUtleSgpO3ZhciBlPWgubi50b1N0cmluZygxNik7dmFyIGk9aC5lLnRvU3RyaW5nKDE2KTtmLnNldFB1YmxpYyhlLGkpO2YuaXNQcml2YXRlPWZhbHNlO2YuaXNQdWJsaWM9dHJ1ZTt2YXIgaz17fTtrLnBydktleU9iaj1oO2sucHViS2V5T2JqPWY7cmV0dXJuIGt9ZWxzZXtpZihhPT1cIkVDXCIpe3ZhciBkPWM7dmFyIGc9bmV3IEtKVVIuY3J5cHRvLkVDRFNBKHtjdXJ2ZTpkfSk7dmFyIGo9Zy5nZW5lcmF0ZUtleVBhaXJIZXgoKTt2YXIgaD1uZXcgS0pVUi5jcnlwdG8uRUNEU0Eoe2N1cnZlOmR9KTtoLnNldFB1YmxpY0tleUhleChqLmVjcHViaGV4KTtoLnNldFByaXZhdGVLZXlIZXgoai5lY3BydmhleCk7aC5pc1ByaXZhdGU9dHJ1ZTtoLmlzUHVibGljPWZhbHNlO3ZhciBmPW5ldyBLSlVSLmNyeXB0by5FQ0RTQSh7Y3VydmU6ZH0pO2Yuc2V0UHVibGljS2V5SGV4KGouZWNwdWJoZXgpO2YuaXNQcml2YXRlPWZhbHNlO2YuaXNQdWJsaWM9dHJ1ZTt2YXIgaz17fTtrLnBydktleU9iaj1oO2sucHViS2V5T2JqPWY7cmV0dXJuIGt9ZWxzZXt0aHJvd1widW5rbm93biBhbGdvcml0aG06IFwiK2F9fX07S0VZVVRJTC5nZXRQRU09ZnVuY3Rpb24oYixELHksbSxxLGope3ZhciBGPUtKVVIsaz1GLmFzbjEsej1rLkRFUk9iamVjdElkZW50aWZpZXIsZj1rLkRFUkludGVnZXIsbD1rLkFTTjFVdGlsLm5ld09iamVjdCxhPWsueDUwOSxDPWEuU3ViamVjdFB1YmxpY0tleUluZm8sZT1GLmNyeXB0byx1PWUuRFNBLHI9ZS5FQ0RTQSxuPVJTQUtleTtmdW5jdGlvbiBBKHMpe3ZhciBHPWwoe3NlcTpbe1wiaW50XCI6MH0se1wiaW50XCI6e2JpZ2ludDpzLm59fSx7XCJpbnRcIjpzLmV9LHtcImludFwiOntiaWdpbnQ6cy5kfX0se1wiaW50XCI6e2JpZ2ludDpzLnB9fSx7XCJpbnRcIjp7YmlnaW50OnMucX19LHtcImludFwiOntiaWdpbnQ6cy5kbXAxfX0se1wiaW50XCI6e2JpZ2ludDpzLmRtcTF9fSx7XCJpbnRcIjp7YmlnaW50OnMuY29lZmZ9fV19KTtyZXR1cm4gR31mdW5jdGlvbiBCKEcpe3ZhciBzPWwoe3NlcTpbe1wiaW50XCI6MX0se29jdHN0cjp7aGV4OkcucHJ2S2V5SGV4fX0se3RhZzpbXCJhMFwiLHRydWUse29pZDp7bmFtZTpHLmN1cnZlTmFtZX19XX0se3RhZzpbXCJhMVwiLHRydWUse2JpdHN0cjp7aGV4OlwiMDBcIitHLnB1YktleUhleH19XX1dfSk7cmV0dXJuIHN9ZnVuY3Rpb24geChzKXt2YXIgRz1sKHtzZXE6W3tcImludFwiOjB9LHtcImludFwiOntiaWdpbnQ6cy5wfX0se1wiaW50XCI6e2JpZ2ludDpzLnF9fSx7XCJpbnRcIjp7YmlnaW50OnMuZ319LHtcImludFwiOntiaWdpbnQ6cy55fX0se1wiaW50XCI6e2JpZ2ludDpzLnh9fV19KTtyZXR1cm4gR31pZigoKG4hPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiBuKXx8KHUhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiB1KXx8KHIhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiByKSkmJmIuaXNQdWJsaWM9PXRydWUmJihEPT09dW5kZWZpbmVkfHxEPT1cIlBLQ1M4UFVCXCIpKXt2YXIgRT1uZXcgQyhiKTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtyZXR1cm4gaGV4dG9wZW0odyxcIlBVQkxJQyBLRVlcIil9aWYoRD09XCJQS0NTMVBSVlwiJiZuIT09dW5kZWZpbmVkJiZiIGluc3RhbmNlb2YgbiYmKHk9PT11bmRlZmluZWR8fHk9PW51bGwpJiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIEU9QShiKTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtyZXR1cm4gaGV4dG9wZW0odyxcIlJTQSBQUklWQVRFIEtFWVwiKX1pZihEPT1cIlBLQ1MxUFJWXCImJnIhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiByJiYoeT09PXVuZGVmaW5lZHx8eT09bnVsbCkmJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgaT1uZXcgeih7bmFtZTpiLmN1cnZlTmFtZX0pO3ZhciB2PWkuZ2V0RW5jb2RlZEhleCgpO3ZhciBoPUIoYik7dmFyIHQ9aC5nZXRFbmNvZGVkSGV4KCk7dmFyIHA9XCJcIjtwKz1oZXh0b3BlbSh2LFwiRUMgUEFSQU1FVEVSU1wiKTtwKz1oZXh0b3BlbSh0LFwiRUMgUFJJVkFURSBLRVlcIik7cmV0dXJuIHB9aWYoRD09XCJQS0NTMVBSVlwiJiZ1IT09dW5kZWZpbmVkJiZiIGluc3RhbmNlb2YgdSYmKHk9PT11bmRlZmluZWR8fHk9PW51bGwpJiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIEU9eChiKTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtyZXR1cm4gaGV4dG9wZW0odyxcIkRTQSBQUklWQVRFIEtFWVwiKX1pZihEPT1cIlBLQ1M1UFJWXCImJm4hPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiBuJiYoeSE9PXVuZGVmaW5lZCYmeSE9bnVsbCkmJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgRT1BKGIpO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO2lmKG09PT11bmRlZmluZWQpe209XCJERVMtRURFMy1DQkNcIn1yZXR1cm4gdGhpcy5nZXRFbmNyeXB0ZWRQS0NTNVBFTUZyb21QcnZLZXlIZXgoXCJSU0FcIix3LHksbSxqKX1pZihEPT1cIlBLQ1M1UFJWXCImJnIhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiByJiYoeSE9PXVuZGVmaW5lZCYmeSE9bnVsbCkmJmIuaXNQcml2YXRlPT10cnVlKXt2YXIgRT1CKGIpO3ZhciB3PUUuZ2V0RW5jb2RlZEhleCgpO2lmKG09PT11bmRlZmluZWQpe209XCJERVMtRURFMy1DQkNcIn1yZXR1cm4gdGhpcy5nZXRFbmNyeXB0ZWRQS0NTNVBFTUZyb21QcnZLZXlIZXgoXCJFQ1wiLHcseSxtLGopfWlmKEQ9PVwiUEtDUzVQUlZcIiYmdSE9PXVuZGVmaW5lZCYmYiBpbnN0YW5jZW9mIHUmJih5IT09dW5kZWZpbmVkJiZ5IT1udWxsKSYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBFPXgoYik7dmFyIHc9RS5nZXRFbmNvZGVkSGV4KCk7aWYobT09PXVuZGVmaW5lZCl7bT1cIkRFUy1FREUzLUNCQ1wifXJldHVybiB0aGlzLmdldEVuY3J5cHRlZFBLQ1M1UEVNRnJvbVBydktleUhleChcIkRTQVwiLHcseSxtLGopfXZhciBvPWZ1bmN0aW9uKEcscyl7dmFyIEk9YyhHLHMpO3ZhciBIPW5ldyBsKHtzZXE6W3tzZXE6W3tvaWQ6e25hbWU6XCJwa2NzNVBCRVMyXCJ9fSx7c2VxOlt7c2VxOlt7b2lkOntuYW1lOlwicGtjczVQQktERjJcIn19LHtzZXE6W3tvY3RzdHI6e2hleDpJLnBia2RmMlNhbHR9fSx7XCJpbnRcIjpJLnBia2RmMkl0ZXJ9XX1dfSx7c2VxOlt7b2lkOntuYW1lOlwiZGVzLUVERTMtQ0JDXCJ9fSx7b2N0c3RyOntoZXg6SS5lbmNyeXB0aW9uU2NoZW1lSVZ9fV19XX1dfSx7b2N0c3RyOntoZXg6SS5jaXBoZXJ0ZXh0fX1dfSk7cmV0dXJuIEguZ2V0RW5jb2RlZEhleCgpfTt2YXIgYz1mdW5jdGlvbihOLE8pe3ZhciBIPTEwMDt2YXIgTT1DcnlwdG9KUy5saWIuV29yZEFycmF5LnJhbmRvbSg4KTt2YXIgTD1cIkRFUy1FREUzLUNCQ1wiO3ZhciBzPUNyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKDgpO3ZhciBJPUNyeXB0b0pTLlBCS0RGMihPLE0se2tleVNpemU6MTkyLzMyLGl0ZXJhdGlvbnM6SH0pO3ZhciBKPUNyeXB0b0pTLmVuYy5IZXgucGFyc2UoTik7dmFyIEs9Q3J5cHRvSlMuVHJpcGxlREVTLmVuY3J5cHQoSixJLHtpdjpzfSkrXCJcIjt2YXIgRz17fTtHLmNpcGhlcnRleHQ9SztHLnBia2RmMlNhbHQ9Q3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkoTSk7Ry5wYmtkZjJJdGVyPUg7Ry5lbmNyeXB0aW9uU2NoZW1lQWxnPUw7Ry5lbmNyeXB0aW9uU2NoZW1lSVY9Q3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkocyk7cmV0dXJuIEd9O2lmKEQ9PVwiUEtDUzhQUlZcIiYmbiE9dW5kZWZpbmVkJiZiIGluc3RhbmNlb2YgbiYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBnPUEoYik7dmFyIGQ9Zy5nZXRFbmNvZGVkSGV4KCk7dmFyIEU9bCh7c2VxOlt7XCJpbnRcIjowfSx7c2VxOlt7b2lkOntuYW1lOlwicnNhRW5jcnlwdGlvblwifX0se1wibnVsbFwiOnRydWV9XX0se29jdHN0cjp7aGV4OmR9fV19KTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtpZih5PT09dW5kZWZpbmVkfHx5PT1udWxsKXtyZXR1cm4gaGV4dG9wZW0odyxcIlBSSVZBVEUgS0VZXCIpfWVsc2V7dmFyIHQ9byh3LHkpO3JldHVybiBoZXh0b3BlbSh0LFwiRU5DUllQVEVEIFBSSVZBVEUgS0VZXCIpfX1pZihEPT1cIlBLQ1M4UFJWXCImJnIhPT11bmRlZmluZWQmJmIgaW5zdGFuY2VvZiByJiZiLmlzUHJpdmF0ZT09dHJ1ZSl7dmFyIGc9bmV3IGwoe3NlcTpbe1wiaW50XCI6MX0se29jdHN0cjp7aGV4OmIucHJ2S2V5SGV4fX0se3RhZzpbXCJhMVwiLHRydWUse2JpdHN0cjp7aGV4OlwiMDBcIitiLnB1YktleUhleH19XX1dfSk7dmFyIGQ9Zy5nZXRFbmNvZGVkSGV4KCk7dmFyIEU9bCh7c2VxOlt7XCJpbnRcIjowfSx7c2VxOlt7b2lkOntuYW1lOlwiZWNQdWJsaWNLZXlcIn19LHtvaWQ6e25hbWU6Yi5jdXJ2ZU5hbWV9fV19LHtvY3RzdHI6e2hleDpkfX1dfSk7dmFyIHc9RS5nZXRFbmNvZGVkSGV4KCk7aWYoeT09PXVuZGVmaW5lZHx8eT09bnVsbCl7cmV0dXJuIGhleHRvcGVtKHcsXCJQUklWQVRFIEtFWVwiKX1lbHNle3ZhciB0PW8odyx5KTtyZXR1cm4gaGV4dG9wZW0odCxcIkVOQ1JZUFRFRCBQUklWQVRFIEtFWVwiKX19aWYoRD09XCJQS0NTOFBSVlwiJiZ1IT09dW5kZWZpbmVkJiZiIGluc3RhbmNlb2YgdSYmYi5pc1ByaXZhdGU9PXRydWUpe3ZhciBnPW5ldyBmKHtiaWdpbnQ6Yi54fSk7dmFyIGQ9Zy5nZXRFbmNvZGVkSGV4KCk7dmFyIEU9bCh7c2VxOlt7XCJpbnRcIjowfSx7c2VxOlt7b2lkOntuYW1lOlwiZHNhXCJ9fSx7c2VxOlt7XCJpbnRcIjp7YmlnaW50OmIucH19LHtcImludFwiOntiaWdpbnQ6Yi5xfX0se1wiaW50XCI6e2JpZ2ludDpiLmd9fV19XX0se29jdHN0cjp7aGV4OmR9fV19KTt2YXIgdz1FLmdldEVuY29kZWRIZXgoKTtpZih5PT09dW5kZWZpbmVkfHx5PT1udWxsKXtyZXR1cm4gaGV4dG9wZW0odyxcIlBSSVZBVEUgS0VZXCIpfWVsc2V7dmFyIHQ9byh3LHkpO3JldHVybiBoZXh0b3BlbSh0LFwiRU5DUllQVEVEIFBSSVZBVEUgS0VZXCIpfX10aHJvd1widW5zdXBwb3J0ZWQgb2JqZWN0IG5vciBmb3JtYXRcIn07S0VZVVRJTC5nZXRLZXlGcm9tQ1NSUEVNPWZ1bmN0aW9uKGIpe3ZhciBhPXBlbXRvaGV4KGIsXCJDRVJUSUZJQ0FURSBSRVFVRVNUXCIpO3ZhciBjPUtFWVVUSUwuZ2V0S2V5RnJvbUNTUkhleChhKTtyZXR1cm4gY307S0VZVVRJTC5nZXRLZXlGcm9tQ1NSSGV4PWZ1bmN0aW9uKGEpe3ZhciBjPUtFWVVUSUwucGFyc2VDU1JIZXgoYSk7dmFyIGI9S0VZVVRJTC5nZXRLZXkoYy5wOHB1YmtleWhleCxudWxsLFwicGtjczhwdWJcIik7cmV0dXJuIGJ9O0tFWVVUSUwucGFyc2VDU1JIZXg9ZnVuY3Rpb24oZCl7dmFyIGk9QVNOMUhFWDt2YXIgZj1pLmdldENoaWxkSWR4O3ZhciBjPWkuZ2V0VExWO3ZhciBiPXt9O3ZhciBnPWQ7aWYoZy5zdWJzdHIoMCwyKSE9XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIENTUihjb2RlOjAwMSlcIn12YXIgZT1mKGcsMCk7aWYoZS5sZW5ndGg8MSl7dGhyb3dcIm1hbGZvcm1lZCBDU1IoY29kZTowMDIpXCJ9aWYoZy5zdWJzdHIoZVswXSwyKSE9XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIENTUihjb2RlOjAwMylcIn12YXIgYT1mKGcsZVswXSk7aWYoYS5sZW5ndGg8Myl7dGhyb3dcIm1hbGZvcm1lZCBDU1IoY29kZTowMDQpXCJ9Yi5wOHB1YmtleWhleD1jKGcsYVsyXSk7cmV0dXJuIGJ9O0tFWVVUSUwuZ2V0SldLRnJvbUtleT1mdW5jdGlvbihkKXt2YXIgYj17fTtpZihkIGluc3RhbmNlb2YgUlNBS2V5JiZkLmlzUHJpdmF0ZSl7Yi5rdHk9XCJSU0FcIjtiLm49aGV4dG9iNjR1KGQubi50b1N0cmluZygxNikpO2IuZT1oZXh0b2I2NHUoZC5lLnRvU3RyaW5nKDE2KSk7Yi5kPWhleHRvYjY0dShkLmQudG9TdHJpbmcoMTYpKTtiLnA9aGV4dG9iNjR1KGQucC50b1N0cmluZygxNikpO2IucT1oZXh0b2I2NHUoZC5xLnRvU3RyaW5nKDE2KSk7Yi5kcD1oZXh0b2I2NHUoZC5kbXAxLnRvU3RyaW5nKDE2KSk7Yi5kcT1oZXh0b2I2NHUoZC5kbXExLnRvU3RyaW5nKDE2KSk7Yi5xaT1oZXh0b2I2NHUoZC5jb2VmZi50b1N0cmluZygxNikpO3JldHVybiBifWVsc2V7aWYoZCBpbnN0YW5jZW9mIFJTQUtleSYmZC5pc1B1YmxpYyl7Yi5rdHk9XCJSU0FcIjtiLm49aGV4dG9iNjR1KGQubi50b1N0cmluZygxNikpO2IuZT1oZXh0b2I2NHUoZC5lLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGJ9ZWxzZXtpZihkIGluc3RhbmNlb2YgS0pVUi5jcnlwdG8uRUNEU0EmJmQuaXNQcml2YXRlKXt2YXIgYT1kLmdldFNob3J0TklTVFBDdXJ2ZU5hbWUoKTtpZihhIT09XCJQLTI1NlwiJiZhIT09XCJQLTM4NFwiKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZSBmb3IgSldUOiBcIithfXZhciBjPWQuZ2V0UHVibGljS2V5WFlIZXgoKTtiLmt0eT1cIkVDXCI7Yi5jcnY9YTtiLng9aGV4dG9iNjR1KGMueCk7Yi55PWhleHRvYjY0dShjLnkpO2IuZD1oZXh0b2I2NHUoZC5wcnZLZXlIZXgpO3JldHVybiBifWVsc2V7aWYoZCBpbnN0YW5jZW9mIEtKVVIuY3J5cHRvLkVDRFNBJiZkLmlzUHVibGljKXt2YXIgYT1kLmdldFNob3J0TklTVFBDdXJ2ZU5hbWUoKTtpZihhIT09XCJQLTI1NlwiJiZhIT09XCJQLTM4NFwiKXt0aHJvd1widW5zdXBwb3J0ZWQgY3VydmUgbmFtZSBmb3IgSldUOiBcIithfXZhciBjPWQuZ2V0UHVibGljS2V5WFlIZXgoKTtiLmt0eT1cIkVDXCI7Yi5jcnY9YTtiLng9aGV4dG9iNjR1KGMueCk7Yi55PWhleHRvYjY0dShjLnkpO3JldHVybiBifX19fXRocm93XCJub3Qgc3VwcG9ydGVkIGtleSBvYmplY3RcIn07XG5SU0FLZXkuZ2V0UG9zQXJyYXlPZkNoaWxkcmVuRnJvbUhleD1mdW5jdGlvbihhKXtyZXR1cm4gQVNOMUhFWC5nZXRDaGlsZElkeChhLDApfTtSU0FLZXkuZ2V0SGV4VmFsdWVBcnJheU9mQ2hpbGRyZW5Gcm9tSGV4PWZ1bmN0aW9uKGYpe3ZhciBuPUFTTjFIRVg7dmFyIGk9bi5nZXRWO3ZhciBrPVJTQUtleS5nZXRQb3NBcnJheU9mQ2hpbGRyZW5Gcm9tSGV4KGYpO3ZhciBlPWkoZixrWzBdKTt2YXIgaj1pKGYsa1sxXSk7dmFyIGI9aShmLGtbMl0pO3ZhciBjPWkoZixrWzNdKTt2YXIgaD1pKGYsa1s0XSk7dmFyIGc9aShmLGtbNV0pO3ZhciBtPWkoZixrWzZdKTt2YXIgbD1pKGYsa1s3XSk7dmFyIGQ9aShmLGtbOF0pO3ZhciBrPW5ldyBBcnJheSgpO2sucHVzaChlLGosYixjLGgsZyxtLGwsZCk7cmV0dXJuIGt9O1JTQUtleS5wcm90b3R5cGUucmVhZFByaXZhdGVLZXlGcm9tUEVNU3RyaW5nPWZ1bmN0aW9uKGQpe3ZhciBjPXBlbXRvaGV4KGQpO3ZhciBiPVJTQUtleS5nZXRIZXhWYWx1ZUFycmF5T2ZDaGlsZHJlbkZyb21IZXgoYyk7dGhpcy5zZXRQcml2YXRlRXgoYlsxXSxiWzJdLGJbM10sYls0XSxiWzVdLGJbNl0sYls3XSxiWzhdKX07UlNBS2V5LnByb3RvdHlwZS5yZWFkUEtDUzVQcnZLZXlIZXg9ZnVuY3Rpb24oYyl7dmFyIGI9UlNBS2V5LmdldEhleFZhbHVlQXJyYXlPZkNoaWxkcmVuRnJvbUhleChjKTt0aGlzLnNldFByaXZhdGVFeChiWzFdLGJbMl0sYlszXSxiWzRdLGJbNV0sYls2XSxiWzddLGJbOF0pfTtSU0FLZXkucHJvdG90eXBlLnJlYWRQS0NTOFBydktleUhleD1mdW5jdGlvbihlKXt2YXIgYyxqLGwsYixhLGYsZCxrO3ZhciBtPUFTTjFIRVg7dmFyIGc9bS5nZXRWYnlMaXN0O2lmKG0uaXNBU04xSEVYKGUpPT09ZmFsc2Upe3Rocm93XCJub3QgQVNOLjEgaGV4IHN0cmluZ1wifXRyeXtjPWcoZSwwLFsyLDAsMV0sXCIwMlwiKTtqPWcoZSwwLFsyLDAsMl0sXCIwMlwiKTtsPWcoZSwwLFsyLDAsM10sXCIwMlwiKTtiPWcoZSwwLFsyLDAsNF0sXCIwMlwiKTthPWcoZSwwLFsyLDAsNV0sXCIwMlwiKTtmPWcoZSwwLFsyLDAsNl0sXCIwMlwiKTtkPWcoZSwwLFsyLDAsN10sXCIwMlwiKTtrPWcoZSwwLFsyLDAsOF0sXCIwMlwiKX1jYXRjaChpKXt0aHJvd1wibWFsZm9ybWVkIFBLQ1MjOCBwbGFpbiBSU0EgcHJpdmF0ZSBrZXlcIn10aGlzLnNldFByaXZhdGVFeChjLGosbCxiLGEsZixkLGspfTtSU0FLZXkucHJvdG90eXBlLnJlYWRQS0NTNVB1YktleUhleD1mdW5jdGlvbihjKXt2YXIgZT1BU04xSEVYO3ZhciBiPWUuZ2V0VjtpZihlLmlzQVNOMUhFWChjKT09PWZhbHNlKXt0aHJvd1wia2V5SGV4IGlzIG5vdCBBU04uMSBoZXggc3RyaW5nXCJ9dmFyIGE9ZS5nZXRDaGlsZElkeChjLDApO2lmKGEubGVuZ3RoIT09Mnx8Yy5zdWJzdHIoYVswXSwyKSE9PVwiMDJcInx8Yy5zdWJzdHIoYVsxXSwyKSE9PVwiMDJcIil7dGhyb3dcIndyb25nIGhleCBmb3IgUEtDUyM1IHB1YmxpYyBrZXlcIn12YXIgZj1iKGMsYVswXSk7dmFyIGQ9YihjLGFbMV0pO3RoaXMuc2V0UHVibGljKGYsZCl9O1JTQUtleS5wcm90b3R5cGUucmVhZFBLQ1M4UHViS2V5SGV4PWZ1bmN0aW9uKGIpe3ZhciBjPUFTTjFIRVg7aWYoYy5pc0FTTjFIRVgoYik9PT1mYWxzZSl7dGhyb3dcIm5vdCBBU04uMSBoZXggc3RyaW5nXCJ9aWYoYy5nZXRUTFZieUxpc3QoYiwwLFswLDBdKSE9PVwiMDYwOTJhODY0ODg2ZjcwZDAxMDEwMVwiKXt0aHJvd1wibm90IFBLQ1M4IFJTQSBwdWJsaWMga2V5XCJ9dmFyIGE9Yy5nZXRUTFZieUxpc3QoYiwwLFsxLDBdKTt0aGlzLnJlYWRQS0NTNVB1YktleUhleChhKX07UlNBS2V5LnByb3RvdHlwZS5yZWFkQ2VydFB1YktleUhleD1mdW5jdGlvbihiLGQpe3ZhciBhLGM7YT1uZXcgWDUwOSgpO2EucmVhZENlcnRIZXgoYik7Yz1hLmdldFB1YmxpY0tleUhleCgpO3RoaXMucmVhZFBLQ1M4UHViS2V5SGV4KGMpfTtcbnZhciBfUkVfSEVYREVDT05MWT1uZXcgUmVnRXhwKFwiXCIpO19SRV9IRVhERUNPTkxZLmNvbXBpbGUoXCJbXjAtOWEtZl1cIixcImdpXCIpO2Z1bmN0aW9uIF9yc2FzaWduX2dldEhleFBhZGRlZERpZ2VzdEluZm9Gb3JTdHJpbmcoZCxlLGEpe3ZhciBiPWZ1bmN0aW9uKGYpe3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmhhc2hTdHJpbmcoZixhKX07dmFyIGM9YihkKTtyZXR1cm4gS0pVUi5jcnlwdG8uVXRpbC5nZXRQYWRkZWREaWdlc3RJbmZvSGV4KGMsYSxlKX1mdW5jdGlvbiBfemVyb1BhZGRpbmdPZlNpZ25hdHVyZShlLGQpe3ZhciBjPVwiXCI7dmFyIGE9ZC80LWUubGVuZ3RoO2Zvcih2YXIgYj0wO2I8YTtiKyspe2M9YytcIjBcIn1yZXR1cm4gYytlfVJTQUtleS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihkLGEpe3ZhciBiPWZ1bmN0aW9uKGUpe3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmhhc2hTdHJpbmcoZSxhKX07dmFyIGM9YihkKTtyZXR1cm4gdGhpcy5zaWduV2l0aE1lc3NhZ2VIYXNoKGMsYSl9O1JTQUtleS5wcm90b3R5cGUuc2lnbldpdGhNZXNzYWdlSGFzaD1mdW5jdGlvbihlLGMpe3ZhciBmPUtKVVIuY3J5cHRvLlV0aWwuZ2V0UGFkZGVkRGlnZXN0SW5mb0hleChlLGMsdGhpcy5uLmJpdExlbmd0aCgpKTt2YXIgYj1wYXJzZUJpZ0ludChmLDE2KTt2YXIgZD10aGlzLmRvUHJpdmF0ZShiKTt2YXIgYT1kLnRvU3RyaW5nKDE2KTtyZXR1cm4gX3plcm9QYWRkaW5nT2ZTaWduYXR1cmUoYSx0aGlzLm4uYml0TGVuZ3RoKCkpfTtmdW5jdGlvbiBwc3NfbWdmMV9zdHIoYyxhLGUpe3ZhciBiPVwiXCIsZD0wO3doaWxlKGIubGVuZ3RoPGEpe2IrPWhleHRvcnN0cihlKHJzdHJ0b2hleChjK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLFsoZCY0Mjc4MTkwMDgwKT4+MjQsKGQmMTY3MTE2ODApPj4xNiwoZCY2NTI4MCk+PjgsZCYyNTVdKSkpKTtkKz0xfXJldHVybiBifVJTQUtleS5wcm90b3R5cGUuc2lnblBTUz1mdW5jdGlvbihlLGEsZCl7dmFyIGM9ZnVuY3Rpb24oZil7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaEhleChmLGEpfTt2YXIgYj1jKHJzdHJ0b2hleChlKSk7aWYoZD09PXVuZGVmaW5lZCl7ZD0tMX1yZXR1cm4gdGhpcy5zaWduV2l0aE1lc3NhZ2VIYXNoUFNTKGIsYSxkKX07UlNBS2V5LnByb3RvdHlwZS5zaWduV2l0aE1lc3NhZ2VIYXNoUFNTPWZ1bmN0aW9uKGwsYSxrKXt2YXIgYj1oZXh0b3JzdHIobCk7dmFyIGc9Yi5sZW5ndGg7dmFyIG09dGhpcy5uLmJpdExlbmd0aCgpLTE7dmFyIGM9TWF0aC5jZWlsKG0vOCk7dmFyIGQ7dmFyIG89ZnVuY3Rpb24oaSl7cmV0dXJuIEtKVVIuY3J5cHRvLlV0aWwuaGFzaEhleChpLGEpfTtpZihrPT09LTF8fGs9PT11bmRlZmluZWQpe2s9Z31lbHNle2lmKGs9PT0tMil7az1jLWctMn1lbHNle2lmKGs8LTIpe3Rocm93XCJpbnZhbGlkIHNhbHQgbGVuZ3RoXCJ9fX1pZihjPChnK2srMikpe3Rocm93XCJkYXRhIHRvbyBsb25nXCJ9dmFyIGY9XCJcIjtpZihrPjApe2Y9bmV3IEFycmF5KGspO25ldyBTZWN1cmVSYW5kb20oKS5uZXh0Qnl0ZXMoZik7Zj1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxmKX12YXIgbj1oZXh0b3JzdHIobyhyc3RydG9oZXgoXCJcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXCIrYitmKSkpO3ZhciBqPVtdO2ZvcihkPTA7ZDxjLWstZy0yO2QrPTEpe2pbZF09MH12YXIgZT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxqKStcIlxceDAxXCIrZjt2YXIgaD1wc3NfbWdmMV9zdHIobixlLmxlbmd0aCxvKTt2YXIgcT1bXTtmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCs9MSl7cVtkXT1lLmNoYXJDb2RlQXQoZCleaC5jaGFyQ29kZUF0KGQpfXZhciBwPSg2NTI4MD4+KDgqYy1tKSkmMjU1O3FbMF0mPX5wO2ZvcihkPTA7ZDxnO2QrKyl7cS5wdXNoKG4uY2hhckNvZGVBdChkKSl9cS5wdXNoKDE4OCk7cmV0dXJuIF96ZXJvUGFkZGluZ09mU2lnbmF0dXJlKHRoaXMuZG9Qcml2YXRlKG5ldyBCaWdJbnRlZ2VyKHEpKS50b1N0cmluZygxNiksdGhpcy5uLmJpdExlbmd0aCgpKX07ZnVuY3Rpb24gX3JzYXNpZ25fZ2V0RGVjcnlwdFNpZ25hdHVyZUJJKGEsZCxjKXt2YXIgYj1uZXcgUlNBS2V5KCk7Yi5zZXRQdWJsaWMoZCxjKTt2YXIgZT1iLmRvUHVibGljKGEpO3JldHVybiBlfWZ1bmN0aW9uIF9yc2FzaWduX2dldEhleERpZ2VzdEluZm9Gcm9tU2lnKGEsYyxiKXt2YXIgZT1fcnNhc2lnbl9nZXREZWNyeXB0U2lnbmF0dXJlQkkoYSxjLGIpO3ZhciBkPWUudG9TdHJpbmcoMTYpLnJlcGxhY2UoL14xZiswMC8sXCJcIik7cmV0dXJuIGR9ZnVuY3Rpb24gX3JzYXNpZ25fZ2V0QWxnTmFtZUFuZEhhc2hGcm9tSGV4RGlzZ2VzdEluZm8oZil7Zm9yKHZhciBlIGluIEtKVVIuY3J5cHRvLlV0aWwuRElHRVNUSU5GT0hFQUQpe3ZhciBkPUtKVVIuY3J5cHRvLlV0aWwuRElHRVNUSU5GT0hFQURbZV07dmFyIGI9ZC5sZW5ndGg7aWYoZi5zdWJzdHJpbmcoMCxiKT09ZCl7dmFyIGM9W2UsZi5zdWJzdHJpbmcoYildO3JldHVybiBjfX1yZXR1cm5bXX1SU0FLZXkucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihmLGope2o9ai5yZXBsYWNlKF9SRV9IRVhERUNPTkxZLFwiXCIpO2o9ai5yZXBsYWNlKC9bIFxcbl0rL2csXCJcIik7dmFyIGI9cGFyc2VCaWdJbnQoaiwxNik7aWYoYi5iaXRMZW5ndGgoKT50aGlzLm4uYml0TGVuZ3RoKCkpe3JldHVybiAwfXZhciBpPXRoaXMuZG9QdWJsaWMoYik7dmFyIGU9aS50b1N0cmluZygxNikucmVwbGFjZSgvXjFmKzAwLyxcIlwiKTt2YXIgZz1fcnNhc2lnbl9nZXRBbGdOYW1lQW5kSGFzaEZyb21IZXhEaXNnZXN0SW5mbyhlKTtpZihnLmxlbmd0aD09MCl7cmV0dXJuIGZhbHNlfXZhciBkPWdbMF07dmFyIGg9Z1sxXTt2YXIgYT1mdW5jdGlvbihrKXtyZXR1cm4gS0pVUi5jcnlwdG8uVXRpbC5oYXNoU3RyaW5nKGssZCl9O3ZhciBjPWEoZik7cmV0dXJuKGg9PWMpfTtSU0FLZXkucHJvdG90eXBlLnZlcmlmeVdpdGhNZXNzYWdlSGFzaD1mdW5jdGlvbihlLGEpe2E9YS5yZXBsYWNlKF9SRV9IRVhERUNPTkxZLFwiXCIpO2E9YS5yZXBsYWNlKC9bIFxcbl0rL2csXCJcIik7dmFyIGI9cGFyc2VCaWdJbnQoYSwxNik7aWYoYi5iaXRMZW5ndGgoKT50aGlzLm4uYml0TGVuZ3RoKCkpe3JldHVybiAwfXZhciBoPXRoaXMuZG9QdWJsaWMoYik7dmFyIGc9aC50b1N0cmluZygxNikucmVwbGFjZSgvXjFmKzAwLyxcIlwiKTt2YXIgYz1fcnNhc2lnbl9nZXRBbGdOYW1lQW5kSGFzaEZyb21IZXhEaXNnZXN0SW5mbyhnKTtpZihjLmxlbmd0aD09MCl7cmV0dXJuIGZhbHNlfXZhciBkPWNbMF07dmFyIGY9Y1sxXTtyZXR1cm4oZj09ZSl9O1JTQUtleS5wcm90b3R5cGUudmVyaWZ5UFNTPWZ1bmN0aW9uKGMsYixhLGYpe3ZhciBlPWZ1bmN0aW9uKGcpe3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmhhc2hIZXgoZyxhKX07dmFyIGQ9ZShyc3RydG9oZXgoYykpO2lmKGY9PT11bmRlZmluZWQpe2Y9LTF9cmV0dXJuIHRoaXMudmVyaWZ5V2l0aE1lc3NhZ2VIYXNoUFNTKGQsYixhLGYpfTtSU0FLZXkucHJvdG90eXBlLnZlcmlmeVdpdGhNZXNzYWdlSGFzaFBTUz1mdW5jdGlvbihmLHMsbCxjKXt2YXIgaz1uZXcgQmlnSW50ZWdlcihzLDE2KTtpZihrLmJpdExlbmd0aCgpPnRoaXMubi5iaXRMZW5ndGgoKSl7cmV0dXJuIGZhbHNlfXZhciByPWZ1bmN0aW9uKGkpe3JldHVybiBLSlVSLmNyeXB0by5VdGlsLmhhc2hIZXgoaSxsKX07dmFyIGo9aGV4dG9yc3RyKGYpO3ZhciBoPWoubGVuZ3RoO3ZhciBnPXRoaXMubi5iaXRMZW5ndGgoKS0xO3ZhciBtPU1hdGguY2VpbChnLzgpO3ZhciBxO2lmKGM9PT0tMXx8Yz09PXVuZGVmaW5lZCl7Yz1ofWVsc2V7aWYoYz09PS0yKXtjPW0taC0yfWVsc2V7aWYoYzwtMil7dGhyb3dcImludmFsaWQgc2FsdCBsZW5ndGhcIn19fWlmKG08KGgrYysyKSl7dGhyb3dcImRhdGEgdG9vIGxvbmdcIn12YXIgYT10aGlzLmRvUHVibGljKGspLnRvQnl0ZUFycmF5KCk7Zm9yKHE9MDtxPGEubGVuZ3RoO3ErPTEpe2FbcV0mPTI1NX13aGlsZShhLmxlbmd0aDxtKXthLnVuc2hpZnQoMCl9aWYoYVttLTFdIT09MTg4KXt0aHJvd1wiZW5jb2RlZCBtZXNzYWdlIGRvZXMgbm90IGVuZCBpbiAweGJjXCJ9YT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxhKTt2YXIgZD1hLnN1YnN0cigwLG0taC0xKTt2YXIgZT1hLnN1YnN0cihkLmxlbmd0aCxoKTt2YXIgcD0oNjUyODA+Pig4Km0tZykpJjI1NTtpZigoZC5jaGFyQ29kZUF0KDApJnApIT09MCl7dGhyb3dcImJpdHMgYmV5b25kIGtleXNpemUgbm90IHplcm9cIn12YXIgbj1wc3NfbWdmMV9zdHIoZSxkLmxlbmd0aCxyKTt2YXIgbz1bXTtmb3IocT0wO3E8ZC5sZW5ndGg7cSs9MSl7b1txXT1kLmNoYXJDb2RlQXQocSlebi5jaGFyQ29kZUF0KHEpfW9bMF0mPX5wO3ZhciBiPW0taC1jLTI7Zm9yKHE9MDtxPGI7cSs9MSl7aWYob1txXSE9PTApe3Rocm93XCJsZWZ0bW9zdCBvY3RldHMgbm90IHplcm9cIn19aWYob1tiXSE9PTEpe3Rocm93XCIweDAxIG1hcmtlciBub3QgZm91bmRcIn1yZXR1cm4gZT09PWhleHRvcnN0cihyKHJzdHJ0b2hleChcIlxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcIitqK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLG8uc2xpY2UoLWMpKSkpKX07UlNBS2V5LlNBTFRfTEVOX0hMRU49LTE7UlNBS2V5LlNBTFRfTEVOX01BWD0tMjtSU0FLZXkuU0FMVF9MRU5fUkVDT1ZFUj0tMjtcbmZ1bmN0aW9uIFg1MDkoKXt2YXIgaz1BU04xSEVYLGo9ay5nZXRDaGlsZElkeCxoPWsuZ2V0VixiPWsuZ2V0VExWLGY9ay5nZXRWYnlMaXN0LGM9ay5nZXRUTFZieUxpc3QsZz1rLmdldElkeGJ5TGlzdCxkPWsuZ2V0VmlkeCxpPWsub2lkbmFtZSxhPVg1MDksZT1wZW10b2hleDt0aGlzLmhleD1udWxsO3RoaXMudmVyc2lvbj0wO3RoaXMuZm9mZnNldD0wO3RoaXMuYUV4dEluZm89bnVsbDt0aGlzLmdldFZlcnNpb249ZnVuY3Rpb24oKXtpZih0aGlzLmhleD09PW51bGx8fHRoaXMudmVyc2lvbiE9PTApe3JldHVybiB0aGlzLnZlcnNpb259aWYoYyh0aGlzLmhleCwwLFswLDBdKSE9PVwiYTAwMzAyMDEwMlwiKXt0aGlzLnZlcnNpb249MTt0aGlzLmZvZmZzZXQ9LTE7cmV0dXJuIDF9dGhpcy52ZXJzaW9uPTM7cmV0dXJuIDN9O3RoaXMuZ2V0U2VyaWFsTnVtYmVySGV4PWZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcy5oZXgsMCxbMCwxK3RoaXMuZm9mZnNldF0sXCIwMlwiKX07dGhpcy5nZXRTaWduYXR1cmVBbGdvcml0aG1GaWVsZD1mdW5jdGlvbigpe3JldHVybiBpKGYodGhpcy5oZXgsMCxbMCwyK3RoaXMuZm9mZnNldCwwXSxcIjA2XCIpKX07dGhpcy5nZXRJc3N1ZXJIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzLmhleCwwLFswLDMrdGhpcy5mb2Zmc2V0XSxcIjMwXCIpfTt0aGlzLmdldElzc3VlclN0cmluZz1mdW5jdGlvbigpe3JldHVybiBhLmhleDJkbih0aGlzLmdldElzc3VlckhleCgpKX07dGhpcy5nZXRTdWJqZWN0SGV4PWZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcy5oZXgsMCxbMCw1K3RoaXMuZm9mZnNldF0sXCIzMFwiKX07dGhpcy5nZXRTdWJqZWN0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGEuaGV4MmRuKHRoaXMuZ2V0U3ViamVjdEhleCgpKX07dGhpcy5nZXROb3RCZWZvcmU9ZnVuY3Rpb24oKXt2YXIgbD1mKHRoaXMuaGV4LDAsWzAsNCt0aGlzLmZvZmZzZXQsMF0pO2w9bC5yZXBsYWNlKC8oLi4pL2csXCIlJDFcIik7bD1kZWNvZGVVUklDb21wb25lbnQobCk7cmV0dXJuIGx9O3RoaXMuZ2V0Tm90QWZ0ZXI9ZnVuY3Rpb24oKXt2YXIgbD1mKHRoaXMuaGV4LDAsWzAsNCt0aGlzLmZvZmZzZXQsMV0pO2w9bC5yZXBsYWNlKC8oLi4pL2csXCIlJDFcIik7bD1kZWNvZGVVUklDb21wb25lbnQobCk7cmV0dXJuIGx9O3RoaXMuZ2V0UHVibGljS2V5SGV4PWZ1bmN0aW9uKCl7cmV0dXJuIGsuZ2V0VExWYnlMaXN0KHRoaXMuaGV4LDAsWzAsNit0aGlzLmZvZmZzZXRdLFwiMzBcIil9O3RoaXMuZ2V0UHVibGljS2V5SWR4PWZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5oZXgsMCxbMCw2K3RoaXMuZm9mZnNldF0sXCIzMFwiKX07dGhpcy5nZXRQdWJsaWNLZXlDb250ZW50SWR4PWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5nZXRQdWJsaWNLZXlJZHgoKTtyZXR1cm4gZyh0aGlzLmhleCxsLFsxLDBdLFwiMzBcIil9O3RoaXMuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIEtFWVVUSUwuZ2V0S2V5KHRoaXMuZ2V0UHVibGljS2V5SGV4KCksbnVsbCxcInBrY3M4cHViXCIpfTt0aGlzLmdldFNpZ25hdHVyZUFsZ29yaXRobU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gaShmKHRoaXMuaGV4LDAsWzEsMF0sXCIwNlwiKSl9O3RoaXMuZ2V0U2lnbmF0dXJlVmFsdWVIZXg9ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLmhleCwwLFsyXSxcIjAzXCIsdHJ1ZSl9O3RoaXMudmVyaWZ5U2lnbmF0dXJlPWZ1bmN0aW9uKG4pe3ZhciBvPXRoaXMuZ2V0U2lnbmF0dXJlQWxnb3JpdGhtTmFtZSgpO3ZhciBsPXRoaXMuZ2V0U2lnbmF0dXJlVmFsdWVIZXgoKTt2YXIgbT1jKHRoaXMuaGV4LDAsWzBdLFwiMzBcIik7dmFyIHA9bmV3IEtKVVIuY3J5cHRvLlNpZ25hdHVyZSh7YWxnOm99KTtwLmluaXQobik7cC51cGRhdGVIZXgobSk7cmV0dXJuIHAudmVyaWZ5KGwpfTt0aGlzLnBhcnNlRXh0PWZ1bmN0aW9uKCl7aWYodGhpcy52ZXJzaW9uIT09Myl7cmV0dXJuIC0xfXZhciBwPWcodGhpcy5oZXgsMCxbMCw3LDBdLFwiMzBcIik7dmFyIG09aih0aGlzLmhleCxwKTt0aGlzLmFFeHRJbmZvPW5ldyBBcnJheSgpO2Zvcih2YXIgbj0wO248bS5sZW5ndGg7bisrKXt2YXIgcT17fTtxLmNyaXRpY2FsPWZhbHNlO3ZhciBsPWoodGhpcy5oZXgsbVtuXSk7dmFyIHI9MDtpZihsLmxlbmd0aD09PTMpe3EuY3JpdGljYWw9dHJ1ZTtyPTF9cS5vaWQ9ay5oZXh0b29pZHN0cihmKHRoaXMuaGV4LG1bbl0sWzBdLFwiMDZcIikpO3ZhciBvPWcodGhpcy5oZXgsbVtuXSxbMStyXSk7cS52aWR4PWQodGhpcy5oZXgsbyk7dGhpcy5hRXh0SW5mby5wdXNoKHEpfX07dGhpcy5nZXRFeHRJbmZvPWZ1bmN0aW9uKG4pe3ZhciBsPXRoaXMuYUV4dEluZm87dmFyIG89bjtpZighbi5tYXRjaCgvXlswLTkuXSskLykpe289S0pVUi5hc24xLng1MDkuT0lELm5hbWUyb2lkKG4pfWlmKG89PT1cIlwiKXtyZXR1cm4gdW5kZWZpbmVkfWZvcih2YXIgbT0wO208bC5sZW5ndGg7bSsrKXtpZihsW21dLm9pZD09PW8pe3JldHVybiBsW21dfX1yZXR1cm4gdW5kZWZpbmVkfTt0aGlzLmdldEV4dEJhc2ljQ29uc3RyYWludHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmdldEV4dEluZm8oXCJiYXNpY0NvbnN0cmFpbnRzXCIpO2lmKG49PT11bmRlZmluZWQpe3JldHVybiBufXZhciBsPWgodGhpcy5oZXgsbi52aWR4KTtpZihsPT09XCJcIil7cmV0dXJue319aWYobD09PVwiMDEwMWZmXCIpe3JldHVybntjQTp0cnVlfX1pZihsLnN1YnN0cigwLDgpPT09XCIwMTAxZmYwMlwiKXt2YXIgbz1oKGwsNik7dmFyIG09cGFyc2VJbnQobywxNik7cmV0dXJue2NBOnRydWUscGF0aExlbjptfX10aHJvd1wiYmFzaWNDb25zdHJhaW50cyBwYXJzZSBlcnJvclwifTt0aGlzLmdldEV4dEtleVVzYWdlQmluPWZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRFeHRJbmZvKFwia2V5VXNhZ2VcIik7aWYobz09PXVuZGVmaW5lZCl7cmV0dXJuXCJcIn12YXIgbT1oKHRoaXMuaGV4LG8udmlkeCk7aWYobS5sZW5ndGglMiE9MHx8bS5sZW5ndGg8PTIpe3Rocm93XCJtYWxmb3JtZWQga2V5IHVzYWdlIHZhbHVlXCJ9dmFyIGw9cGFyc2VJbnQobS5zdWJzdHIoMCwyKSk7dmFyIG49cGFyc2VJbnQobS5zdWJzdHIoMiksMTYpLnRvU3RyaW5nKDIpO3JldHVybiBuLnN1YnN0cigwLG4ubGVuZ3RoLWwpfTt0aGlzLmdldEV4dEtleVVzYWdlU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5nZXRFeHRLZXlVc2FnZUJpbigpO3ZhciBsPW5ldyBBcnJheSgpO2Zvcih2YXIgbT0wO208bi5sZW5ndGg7bSsrKXtpZihuLnN1YnN0cihtLDEpPT1cIjFcIil7bC5wdXNoKFg1MDkuS0VZVVNBR0VfTkFNRVttXSl9fXJldHVybiBsLmpvaW4oXCIsXCIpfTt0aGlzLmdldEV4dFN1YmplY3RLZXlJZGVudGlmaWVyPWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5nZXRFeHRJbmZvKFwic3ViamVjdEtleUlkZW50aWZpZXJcIik7aWYobD09PXVuZGVmaW5lZCl7cmV0dXJuIGx9cmV0dXJuIGgodGhpcy5oZXgsbC52aWR4KX07dGhpcy5nZXRFeHRBdXRob3JpdHlLZXlJZGVudGlmaWVyPWZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5nZXRFeHRJbmZvKFwiYXV0aG9yaXR5S2V5SWRlbnRpZmllclwiKTtpZihwPT09dW5kZWZpbmVkKXtyZXR1cm4gcH12YXIgbD17fTt2YXIgbz1iKHRoaXMuaGV4LHAudmlkeCk7dmFyIG09aihvLDApO2Zvcih2YXIgbj0wO248bS5sZW5ndGg7bisrKXtpZihvLnN1YnN0cihtW25dLDIpPT09XCI4MFwiKXtsLmtpZD1oKG8sbVtuXSl9fXJldHVybiBsfTt0aGlzLmdldEV4dEV4dEtleVVzYWdlTmFtZT1mdW5jdGlvbigpe3ZhciBwPXRoaXMuZ2V0RXh0SW5mbyhcImV4dEtleVVzYWdlXCIpO2lmKHA9PT11bmRlZmluZWQpe3JldHVybiBwfXZhciBsPW5ldyBBcnJheSgpO3ZhciBvPWIodGhpcy5oZXgscC52aWR4KTtpZihvPT09XCJcIil7cmV0dXJuIGx9dmFyIG09aihvLDApO2Zvcih2YXIgbj0wO248bS5sZW5ndGg7bisrKXtsLnB1c2goaShoKG8sbVtuXSkpKX1yZXR1cm4gbH07dGhpcy5nZXRFeHRTdWJqZWN0QWx0TmFtZT1mdW5jdGlvbigpe3ZhciBtPXRoaXMuZ2V0RXh0U3ViamVjdEFsdE5hbWUyKCk7dmFyIGw9bmV3IEFycmF5KCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe2lmKG1bbl1bMF09PT1cIkROU1wiKXtsLnB1c2gobVtuXVsxXSl9fXJldHVybiBsfTt0aGlzLmdldEV4dFN1YmplY3RBbHROYW1lMj1mdW5jdGlvbigpe3ZhciBwLHMscjt2YXIgcT10aGlzLmdldEV4dEluZm8oXCJzdWJqZWN0QWx0TmFtZVwiKTtpZihxPT09dW5kZWZpbmVkKXtyZXR1cm4gcX12YXIgbD1uZXcgQXJyYXkoKTt2YXIgbz1iKHRoaXMuaGV4LHEudmlkeCk7dmFyIG09aihvLDApO2Zvcih2YXIgbj0wO248bS5sZW5ndGg7bisrKXtyPW8uc3Vic3RyKG1bbl0sMik7cD1oKG8sbVtuXSk7aWYocj09PVwiODFcIil7cz1oZXh0b3V0ZjgocCk7bC5wdXNoKFtcIk1BSUxcIixzXSl9aWYocj09PVwiODJcIil7cz1oZXh0b3V0ZjgocCk7bC5wdXNoKFtcIkROU1wiLHNdKX1pZihyPT09XCI4NFwiKXtzPVg1MDkuaGV4MmRuKHAsMCk7bC5wdXNoKFtcIkROXCIsc10pfWlmKHI9PT1cIjg2XCIpe3M9aGV4dG91dGY4KHApO2wucHVzaChbXCJVUklcIixzXSl9aWYocj09PVwiODdcIil7cz1oZXh0b2lwKHApO2wucHVzaChbXCJJUFwiLHNdKX19cmV0dXJuIGx9O3RoaXMuZ2V0RXh0Q1JMRGlzdHJpYnV0aW9uUG9pbnRzVVJJPWZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5nZXRFeHRJbmZvKFwiY1JMRGlzdHJpYnV0aW9uUG9pbnRzXCIpO2lmKHE9PT11bmRlZmluZWQpe3JldHVybiBxfXZhciBsPW5ldyBBcnJheSgpO3ZhciBtPWoodGhpcy5oZXgscS52aWR4KTtmb3IodmFyIG89MDtvPG0ubGVuZ3RoO28rKyl7dHJ5e3ZhciByPWYodGhpcy5oZXgsbVtvXSxbMCwwLDBdLFwiODZcIik7dmFyIHA9aGV4dG91dGY4KHIpO2wucHVzaChwKX1jYXRjaChuKXt9fXJldHVybiBsfTt0aGlzLmdldEV4dEFJQUluZm89ZnVuY3Rpb24oKXt2YXIgcD10aGlzLmdldEV4dEluZm8oXCJhdXRob3JpdHlJbmZvQWNjZXNzXCIpO2lmKHA9PT11bmRlZmluZWQpe3JldHVybiBwfXZhciBsPXtvY3NwOltdLGNhaXNzdWVyOltdfTt2YXIgbT1qKHRoaXMuaGV4LHAudmlkeCk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspe3ZhciBxPWYodGhpcy5oZXgsbVtuXSxbMF0sXCIwNlwiKTt2YXIgbz1mKHRoaXMuaGV4LG1bbl0sWzFdLFwiODZcIik7aWYocT09PVwiMmIwNjAxMDUwNTA3MzAwMVwiKXtsLm9jc3AucHVzaChoZXh0b3V0ZjgobykpfWlmKHE9PT1cIjJiMDYwMTA1MDUwNzMwMDJcIil7bC5jYWlzc3Vlci5wdXNoKGhleHRvdXRmOChvKSl9fXJldHVybiBsfTt0aGlzLmdldEV4dENlcnRpZmljYXRlUG9saWNpZXM9ZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEV4dEluZm8oXCJjZXJ0aWZpY2F0ZVBvbGljaWVzXCIpO2lmKG89PT11bmRlZmluZWQpe3JldHVybiBvfXZhciBsPWIodGhpcy5oZXgsby52aWR4KTt2YXIgdT1bXTt2YXIgcz1qKGwsMCk7Zm9yKHZhciByPTA7cjxzLmxlbmd0aDtyKyspe3ZhciB0PXt9O3ZhciBuPWoobCxzW3JdKTt0LmlkPWkoaChsLG5bMF0pKTtpZihuLmxlbmd0aD09PTIpe3ZhciBtPWoobCxuWzFdKTtmb3IodmFyIHE9MDtxPG0ubGVuZ3RoO3ErKyl7dmFyIHA9ZihsLG1bcV0sWzBdLFwiMDZcIik7aWYocD09PVwiMmIwNjAxMDUwNTA3MDIwMVwiKXt0LmNwcz1oZXh0b3V0ZjgoZihsLG1bcV0sWzFdKSl9ZWxzZXtpZihwPT09XCIyYjA2MDEwNTA1MDcwMjAyXCIpe3QudW5vdGljZT1oZXh0b3V0ZjgoZihsLG1bcV0sWzEsMF0pKX19fX11LnB1c2godCl9cmV0dXJuIHV9O3RoaXMucmVhZENlcnRQRU09ZnVuY3Rpb24obCl7dGhpcy5yZWFkQ2VydEhleChlKGwpKX07dGhpcy5yZWFkQ2VydEhleD1mdW5jdGlvbihsKXt0aGlzLmhleD1sO3RoaXMuZ2V0VmVyc2lvbigpO3RyeXtnKHRoaXMuaGV4LDAsWzAsN10sXCJhM1wiKTt0aGlzLnBhcnNlRXh0KCl9Y2F0Y2gobSl7fX07dGhpcy5nZXRJbmZvPWZ1bmN0aW9uKCl7dmFyIG09WDUwOTt2YXIgQix1LHo7Qj1cIkJhc2ljIEZpZWxkc1xcblwiO0IrPVwiICBzZXJpYWwgbnVtYmVyOiBcIit0aGlzLmdldFNlcmlhbE51bWJlckhleCgpK1wiXFxuXCI7Qis9XCIgIHNpZ25hdHVyZSBhbGdvcml0aG06IFwiK3RoaXMuZ2V0U2lnbmF0dXJlQWxnb3JpdGhtRmllbGQoKStcIlxcblwiO0IrPVwiICBpc3N1ZXI6IFwiK3RoaXMuZ2V0SXNzdWVyU3RyaW5nKCkrXCJcXG5cIjtCKz1cIiAgbm90QmVmb3JlOiBcIit0aGlzLmdldE5vdEJlZm9yZSgpK1wiXFxuXCI7Qis9XCIgIG5vdEFmdGVyOiBcIit0aGlzLmdldE5vdEFmdGVyKCkrXCJcXG5cIjtCKz1cIiAgc3ViamVjdDogXCIrdGhpcy5nZXRTdWJqZWN0U3RyaW5nKCkrXCJcXG5cIjtCKz1cIiAgc3ViamVjdCBwdWJsaWMga2V5IGluZm86IFxcblwiO3U9dGhpcy5nZXRQdWJsaWNLZXkoKTtCKz1cIiAgICBrZXkgYWxnb3JpdGhtOiBcIit1LnR5cGUrXCJcXG5cIjtpZih1LnR5cGU9PT1cIlJTQVwiKXtCKz1cIiAgICBuPVwiK2hleHRvcG9zaGV4KHUubi50b1N0cmluZygxNikpLnN1YnN0cigwLDE2KStcIi4uLlxcblwiO0IrPVwiICAgIGU9XCIraGV4dG9wb3NoZXgodS5lLnRvU3RyaW5nKDE2KSkrXCJcXG5cIn16PXRoaXMuYUV4dEluZm87aWYoeiE9PXVuZGVmaW5lZCYmeiE9PW51bGwpe0IrPVwiWDUwOXYzIEV4dGVuc2lvbnM6XFxuXCI7Zm9yKHZhciByPTA7cjx6Lmxlbmd0aDtyKyspe3ZhciBuPXpbcl07dmFyIEE9S0pVUi5hc24xLng1MDkuT0lELm9pZDJuYW1lKG4ub2lkKTtpZihBPT09XCJcIil7QT1uLm9pZH12YXIgeD1cIlwiO2lmKG4uY3JpdGljYWw9PT10cnVlKXt4PVwiQ1JJVElDQUxcIn1CKz1cIiAgXCIrQStcIiBcIit4K1wiOlxcblwiO2lmKEE9PT1cImJhc2ljQ29uc3RyYWludHNcIil7dmFyIHY9dGhpcy5nZXRFeHRCYXNpY0NvbnN0cmFpbnRzKCk7aWYodi5jQT09PXVuZGVmaW5lZCl7Qis9XCIgICAge31cXG5cIn1lbHNle0IrPVwiICAgIGNBPXRydWVcIjtpZih2LnBhdGhMZW4hPT11bmRlZmluZWQpe0IrPVwiLCBwYXRoTGVuPVwiK3YucGF0aExlbn1CKz1cIlxcblwifX1lbHNle2lmKEE9PT1cImtleVVzYWdlXCIpe0IrPVwiICAgIFwiK3RoaXMuZ2V0RXh0S2V5VXNhZ2VTdHJpbmcoKStcIlxcblwifWVsc2V7aWYoQT09PVwic3ViamVjdEtleUlkZW50aWZpZXJcIil7Qis9XCIgICAgXCIrdGhpcy5nZXRFeHRTdWJqZWN0S2V5SWRlbnRpZmllcigpK1wiXFxuXCJ9ZWxzZXtpZihBPT09XCJhdXRob3JpdHlLZXlJZGVudGlmaWVyXCIpe3ZhciBsPXRoaXMuZ2V0RXh0QXV0aG9yaXR5S2V5SWRlbnRpZmllcigpO2lmKGwua2lkIT09dW5kZWZpbmVkKXtCKz1cIiAgICBraWQ9XCIrbC5raWQrXCJcXG5cIn19ZWxzZXtpZihBPT09XCJleHRLZXlVc2FnZVwiKXt2YXIgdz10aGlzLmdldEV4dEV4dEtleVVzYWdlTmFtZSgpO0IrPVwiICAgIFwiK3cuam9pbihcIiwgXCIpK1wiXFxuXCJ9ZWxzZXtpZihBPT09XCJzdWJqZWN0QWx0TmFtZVwiKXt2YXIgdD10aGlzLmdldEV4dFN1YmplY3RBbHROYW1lMigpO0IrPVwiICAgIFwiK3QrXCJcXG5cIn1lbHNle2lmKEE9PT1cImNSTERpc3RyaWJ1dGlvblBvaW50c1wiKXt2YXIgeT10aGlzLmdldEV4dENSTERpc3RyaWJ1dGlvblBvaW50c1VSSSgpO0IrPVwiICAgIFwiK3krXCJcXG5cIn1lbHNle2lmKEE9PT1cImF1dGhvcml0eUluZm9BY2Nlc3NcIil7dmFyIHA9dGhpcy5nZXRFeHRBSUFJbmZvKCk7aWYocC5vY3NwIT09dW5kZWZpbmVkKXtCKz1cIiAgICBvY3NwOiBcIitwLm9jc3Auam9pbihcIixcIikrXCJcXG5cIn1pZihwLmNhaXNzdWVyIT09dW5kZWZpbmVkKXtCKz1cIiAgICBjYWlzc3VlcjogXCIrcC5jYWlzc3Vlci5qb2luKFwiLFwiKStcIlxcblwifX1lbHNle2lmKEE9PT1cImNlcnRpZmljYXRlUG9saWNpZXNcIil7dmFyIG89dGhpcy5nZXRFeHRDZXJ0aWZpY2F0ZVBvbGljaWVzKCk7Zm9yKHZhciBxPTA7cTxvLmxlbmd0aDtxKyspe2lmKG9bcV0uaWQhPT11bmRlZmluZWQpe0IrPVwiICAgIHBvbGljeSBvaWQ6IFwiK29bcV0uaWQrXCJcXG5cIn1pZihvW3FdLmNwcyE9PXVuZGVmaW5lZCl7Qis9XCIgICAgY3BzOiBcIitvW3FdLmNwcytcIlxcblwifX19fX19fX19fX19fUIrPVwic2lnbmF0dXJlIGFsZ29yaXRobTogXCIrdGhpcy5nZXRTaWduYXR1cmVBbGdvcml0aG1OYW1lKCkrXCJcXG5cIjtCKz1cInNpZ25hdHVyZTogXCIrdGhpcy5nZXRTaWduYXR1cmVWYWx1ZUhleCgpLnN1YnN0cigwLDE2KStcIi4uLlxcblwiO3JldHVybiBCfX1YNTA5LmhleDJkbj1mdW5jdGlvbihmLGIpe2lmKGI9PT11bmRlZmluZWQpe2I9MH1pZihmLnN1YnN0cihiLDIpIT09XCIzMFwiKXt0aHJvd1wibWFsZm9ybWVkIEROXCJ9dmFyIGM9bmV3IEFycmF5KCk7dmFyIGQ9QVNOMUhFWC5nZXRDaGlsZElkeChmLGIpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjLnB1c2goWDUwOS5oZXgycmRuKGYsZFtlXSkpfWM9Yy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShcIi9cIixcIlxcXFwvXCIpfSk7cmV0dXJuXCIvXCIrYy5qb2luKFwiL1wiKX07WDUwOS5oZXgycmRuPWZ1bmN0aW9uKGYsYil7aWYoYj09PXVuZGVmaW5lZCl7Yj0wfWlmKGYuc3Vic3RyKGIsMikhPT1cIjMxXCIpe3Rocm93XCJtYWxmb3JtZWQgUkROXCJ9dmFyIGM9bmV3IEFycmF5KCk7dmFyIGQ9QVNOMUhFWC5nZXRDaGlsZElkeChmLGIpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjLnB1c2goWDUwOS5oZXgyYXR0clR5cGVWYWx1ZShmLGRbZV0pKX1jPWMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoXCIrXCIsXCJcXFxcK1wiKX0pO3JldHVybiBjLmpvaW4oXCIrXCIpfTtYNTA5LmhleDJhdHRyVHlwZVZhbHVlPWZ1bmN0aW9uKGQsaSl7dmFyIGo9QVNOMUhFWDt2YXIgaD1qLmdldFY7aWYoaT09PXVuZGVmaW5lZCl7aT0wfWlmKGQuc3Vic3RyKGksMikhPT1cIjMwXCIpe3Rocm93XCJtYWxmb3JtZWQgYXR0cmlidXRlIHR5cGUgYW5kIHZhbHVlXCJ9dmFyIGc9ai5nZXRDaGlsZElkeChkLGkpO2lmKGcubGVuZ3RoIT09Mnx8ZC5zdWJzdHIoZ1swXSwyKSE9PVwiMDZcIil7XCJtYWxmb3JtZWQgYXR0cmlidXRlIHR5cGUgYW5kIHZhbHVlXCJ9dmFyIGI9aChkLGdbMF0pO3ZhciBmPUtKVVIuYXNuMS5BU04xVXRpbC5vaWRIZXhUb0ludChiKTt2YXIgZT1LSlVSLmFzbjEueDUwOS5PSUQub2lkMmF0eXBlKGYpO3ZhciBhPWgoZCxnWzFdKTt2YXIgYz1oZXh0b3JzdHIoYSk7cmV0dXJuIGUrXCI9XCIrY307WDUwOS5nZXRQdWJsaWNLZXlGcm9tQ2VydEhleD1mdW5jdGlvbihiKXt2YXIgYT1uZXcgWDUwOSgpO2EucmVhZENlcnRIZXgoYik7cmV0dXJuIGEuZ2V0UHVibGljS2V5KCl9O1g1MDkuZ2V0UHVibGljS2V5RnJvbUNlcnRQRU09ZnVuY3Rpb24oYil7dmFyIGE9bmV3IFg1MDkoKTthLnJlYWRDZXJ0UEVNKGIpO3JldHVybiBhLmdldFB1YmxpY0tleSgpfTtYNTA5LmdldFB1YmxpY0tleUluZm9Qcm9wT2ZDZXJ0UEVNPWZ1bmN0aW9uKGMpe3ZhciBlPUFTTjFIRVg7dmFyIGc9ZS5nZXRWYnlMaXN0O3ZhciBiPXt9O3ZhciBhLGYsZDtiLmFsZ3BhcmFtPW51bGw7YT1uZXcgWDUwOSgpO2EucmVhZENlcnRQRU0oYyk7Zj1hLmdldFB1YmxpY0tleUhleCgpO2Iua2V5aGV4PWcoZiwwLFsxXSxcIjAzXCIpLnN1YnN0cigyKTtiLmFsZ29pZD1nKGYsMCxbMCwwXSxcIjA2XCIpO2lmKGIuYWxnb2lkPT09XCIyYTg2NDhjZTNkMDIwMVwiKXtiLmFsZ3BhcmFtPWcoZiwwLFswLDFdLFwiMDZcIil9cmV0dXJuIGJ9O1g1MDkuS0VZVVNBR0VfTkFNRT1bXCJkaWdpdGFsU2lnbmF0dXJlXCIsXCJub25SZXB1ZGlhdGlvblwiLFwia2V5RW5jaXBoZXJtZW50XCIsXCJkYXRhRW5jaXBoZXJtZW50XCIsXCJrZXlBZ3JlZW1lbnRcIixcImtleUNlcnRTaWduXCIsXCJjUkxTaWduXCIsXCJlbmNpcGhlck9ubHlcIixcImRlY2lwaGVyT25seVwiXTtcbmlmKHR5cGVvZiBLSlVSPT1cInVuZGVmaW5lZFwifHwhS0pVUil7S0pVUj17fX1pZih0eXBlb2YgS0pVUi5qd3M9PVwidW5kZWZpbmVkXCJ8fCFLSlVSLmp3cyl7S0pVUi5qd3M9e319S0pVUi5qd3MuSldTPWZ1bmN0aW9uKCl7dmFyIGI9S0pVUixhPWIuandzLkpXUyxjPWEuaXNTYWZlSlNPTlN0cmluZzt0aGlzLnBhcnNlSldTPWZ1bmN0aW9uKGcsail7aWYoKHRoaXMucGFyc2VkSldTIT09dW5kZWZpbmVkKSYmKGp8fCh0aGlzLnBhcnNlZEpXUy5zaWd2YWxIIT09dW5kZWZpbmVkKSkpe3JldHVybn12YXIgaT1nLm1hdGNoKC9eKFteLl0rKVxcLihbXi5dKylcXC4oW14uXSspJC8pO2lmKGk9PW51bGwpe3Rocm93XCJKV1Mgc2lnbmF0dXJlIGlzIG5vdCBhIGZvcm0gb2YgJ0hlYWQuUGF5bG9hZC5TaWdWYWx1ZScuXCJ9dmFyIGs9aVsxXTt2YXIgZT1pWzJdO3ZhciBsPWlbM107dmFyIG49aytcIi5cIitlO3RoaXMucGFyc2VkSldTPXt9O3RoaXMucGFyc2VkSldTLmhlYWRCNjRVPWs7dGhpcy5wYXJzZWRKV1MucGF5bG9hZEI2NFU9ZTt0aGlzLnBhcnNlZEpXUy5zaWd2YWxCNjRVPWw7dGhpcy5wYXJzZWRKV1Muc2k9bjtpZighail7dmFyIGg9YjY0dXRvaGV4KGwpO3ZhciBmPXBhcnNlQmlnSW50KGgsMTYpO3RoaXMucGFyc2VkSldTLnNpZ3ZhbEg9aDt0aGlzLnBhcnNlZEpXUy5zaWd2YWxCST1mfXZhciBkPWI2NHV0b3V0Zjgoayk7dmFyIG09YjY0dXRvdXRmOChlKTt0aGlzLnBhcnNlZEpXUy5oZWFkUz1kO3RoaXMucGFyc2VkSldTLnBheWxvYWRTPW07aWYoIWMoZCx0aGlzLnBhcnNlZEpXUyxcImhlYWRQXCIpKXt0aHJvd1wibWFsZm9ybWVkIEpTT04gc3RyaW5nIGZvciBKV1MgSGVhZDogXCIrZH19fTtLSlVSLmp3cy5KV1Muc2lnbj1mdW5jdGlvbihpLHYseSx6LGEpe3ZhciB3PUtKVVIsbT13Lmp3cyxxPW0uSldTLGc9cS5yZWFkU2FmZUpTT05TdHJpbmcscD1xLmlzU2FmZUpTT05TdHJpbmcsZD13LmNyeXB0byxrPWQuRUNEU0Esbz1kLk1hYyxjPWQuU2lnbmF0dXJlLHQ9SlNPTjt2YXIgcyxqLG47aWYodHlwZW9mIHYhPVwic3RyaW5nXCImJnR5cGVvZiB2IT1cIm9iamVjdFwiKXt0aHJvd1wic3BIZWFkZXIgbXVzdCBiZSBKU09OIHN0cmluZyBvciBvYmplY3Q6IFwiK3Z9aWYodHlwZW9mIHY9PVwib2JqZWN0XCIpe2o9djtzPXQuc3RyaW5naWZ5KGopfWlmKHR5cGVvZiB2PT1cInN0cmluZ1wiKXtzPXY7aWYoIXAocykpe3Rocm93XCJKV1MgSGVhZCBpcyBub3Qgc2FmZSBKU09OIHN0cmluZzogXCIrc31qPWcocyl9bj15O2lmKHR5cGVvZiB5PT1cIm9iamVjdFwiKXtuPXQuc3RyaW5naWZ5KHkpfWlmKChpPT1cIlwifHxpPT1udWxsKSYmai5hbGchPT11bmRlZmluZWQpe2k9ai5hbGd9aWYoKGkhPVwiXCImJmkhPW51bGwpJiZqLmFsZz09PXVuZGVmaW5lZCl7ai5hbGc9aTtzPXQuc3RyaW5naWZ5KGopfWlmKGkhPT1qLmFsZyl7dGhyb3dcImFsZyBhbmQgc0hlYWRlci5hbGcgZG9lc24ndCBtYXRjaDogXCIraStcIiE9XCIrai5hbGd9dmFyIHI9bnVsbDtpZihxLmp3c2FsZzJzaWdhbGdbaV09PT11bmRlZmluZWQpe3Rocm93XCJ1bnN1cHBvcnRlZCBhbGcgbmFtZTogXCIraX1lbHNle3I9cS5qd3NhbGcyc2lnYWxnW2ldfXZhciBlPXV0Zjh0b2I2NHUocyk7dmFyIGw9dXRmOHRvYjY0dShuKTt2YXIgYj1lK1wiLlwiK2w7dmFyIHg9XCJcIjtpZihyLnN1YnN0cigwLDQpPT1cIkhtYWNcIil7aWYoej09PXVuZGVmaW5lZCl7dGhyb3dcIm1hYyBrZXkgc2hhbGwgYmUgc3BlY2lmaWVkIGZvciBIUyogYWxnXCJ9dmFyIGg9bmV3IG8oe2FsZzpyLHByb3Y6XCJjcnlwdG9qc1wiLHBhc3M6en0pO2gudXBkYXRlU3RyaW5nKGIpO3g9aC5kb0ZpbmFsKCl9ZWxzZXtpZihyLmluZGV4T2YoXCJ3aXRoRUNEU0FcIikhPS0xKXt2YXIgZj1uZXcgYyh7YWxnOnJ9KTtmLmluaXQoeixhKTtmLnVwZGF0ZVN0cmluZyhiKTtoQVNOMVNpZz1mLnNpZ24oKTt4PUtKVVIuY3J5cHRvLkVDRFNBLmFzbjFTaWdUb0NvbmNhdFNpZyhoQVNOMVNpZyl9ZWxzZXtpZihyIT1cIm5vbmVcIil7dmFyIGY9bmV3IGMoe2FsZzpyfSk7Zi5pbml0KHosYSk7Zi51cGRhdGVTdHJpbmcoYik7eD1mLnNpZ24oKX19fXZhciB1PWhleHRvYjY0dSh4KTtyZXR1cm4gYitcIi5cIit1fTtLSlVSLmp3cy5KV1MudmVyaWZ5PWZ1bmN0aW9uKHcsQixuKXt2YXIgeD1LSlVSLHE9eC5qd3MsdD1xLkpXUyxpPXQucmVhZFNhZmVKU09OU3RyaW5nLGU9eC5jcnlwdG8scD1lLkVDRFNBLHM9ZS5NYWMsZD1lLlNpZ25hdHVyZSxtO2lmKHR5cGVvZiBSU0FLZXkhPT11bmRlZmluZWQpe209UlNBS2V5fXZhciB5PXcuc3BsaXQoXCIuXCIpO2lmKHkubGVuZ3RoIT09Myl7cmV0dXJuIGZhbHNlfXZhciBmPXlbMF07dmFyIHI9eVsxXTt2YXIgYz1mK1wiLlwiK3I7dmFyIEE9YjY0dXRvaGV4KHlbMl0pO3ZhciBsPWkoYjY0dXRvdXRmOCh5WzBdKSk7dmFyIGs9bnVsbDt2YXIgej1udWxsO2lmKGwuYWxnPT09dW5kZWZpbmVkKXt0aHJvd1wiYWxnb3JpdGhtIG5vdCBzcGVjaWZpZWQgaW4gaGVhZGVyXCJ9ZWxzZXtrPWwuYWxnO3o9ay5zdWJzdHIoMCwyKX1pZihuIT1udWxsJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobik9PT1cIltvYmplY3QgQXJyYXldXCImJm4ubGVuZ3RoPjApe3ZhciBiPVwiOlwiK24uam9pbihcIjpcIikrXCI6XCI7aWYoYi5pbmRleE9mKFwiOlwiK2srXCI6XCIpPT0tMSl7dGhyb3dcImFsZ29yaXRobSAnXCIraytcIicgbm90IGFjY2VwdGVkIGluIHRoZSBsaXN0XCJ9fWlmKGshPVwibm9uZVwiJiZCPT09bnVsbCl7dGhyb3dcImtleSBzaGFsbCBiZSBzcGVjaWZpZWQgdG8gdmVyaWZ5LlwifWlmKHR5cGVvZiBCPT1cInN0cmluZ1wiJiZCLmluZGV4T2YoXCItLS0tLUJFR0lOIFwiKSE9LTEpe0I9S0VZVVRJTC5nZXRLZXkoQil9aWYoej09XCJSU1wifHx6PT1cIlBTXCIpe2lmKCEoQiBpbnN0YW5jZW9mIG0pKXt0aHJvd1wia2V5IHNoYWxsIGJlIGEgUlNBS2V5IG9iaiBmb3IgUlMqIGFuZCBQUyogYWxnc1wifX1pZih6PT1cIkVTXCIpe2lmKCEoQiBpbnN0YW5jZW9mIHApKXt0aHJvd1wia2V5IHNoYWxsIGJlIGEgRUNEU0Egb2JqIGZvciBFUyogYWxnc1wifX1pZihrPT1cIm5vbmVcIil7fXZhciB1PW51bGw7aWYodC5qd3NhbGcyc2lnYWxnW2wuYWxnXT09PXVuZGVmaW5lZCl7dGhyb3dcInVuc3VwcG9ydGVkIGFsZyBuYW1lOiBcIitrfWVsc2V7dT10Lmp3c2FsZzJzaWdhbGdba119aWYodT09XCJub25lXCIpe3Rocm93XCJub3Qgc3VwcG9ydGVkXCJ9ZWxzZXtpZih1LnN1YnN0cigwLDQpPT1cIkhtYWNcIil7dmFyIG89bnVsbDtpZihCPT09dW5kZWZpbmVkKXt0aHJvd1wiaGV4YWRlY2ltYWwga2V5IHNoYWxsIGJlIHNwZWNpZmllZCBmb3IgSE1BQ1wifXZhciBqPW5ldyBzKHthbGc6dSxwYXNzOkJ9KTtqLnVwZGF0ZVN0cmluZyhjKTtvPWouZG9GaW5hbCgpO3JldHVybiBBPT1vfWVsc2V7aWYodS5pbmRleE9mKFwid2l0aEVDRFNBXCIpIT0tMSl7dmFyIGg9bnVsbDt0cnl7aD1wLmNvbmNhdFNpZ1RvQVNOMVNpZyhBKX1jYXRjaCh2KXtyZXR1cm4gZmFsc2V9dmFyIGc9bmV3IGQoe2FsZzp1fSk7Zy5pbml0KEIpO2cudXBkYXRlU3RyaW5nKGMpO3JldHVybiBnLnZlcmlmeShoKX1lbHNle3ZhciBnPW5ldyBkKHthbGc6dX0pO2cuaW5pdChCKTtnLnVwZGF0ZVN0cmluZyhjKTtyZXR1cm4gZy52ZXJpZnkoQSl9fX19O0tKVVIuandzLkpXUy5wYXJzZT1mdW5jdGlvbihnKXt2YXIgYz1nLnNwbGl0KFwiLlwiKTt2YXIgYj17fTt2YXIgZixlLGQ7aWYoYy5sZW5ndGghPTImJmMubGVuZ3RoIT0zKXt0aHJvd1wibWFsZm9ybWVkIHNKV1M6IHdyb25nIG51bWJlciBvZiAnLicgc3BsaXR0ZWQgZWxlbWVudHNcIn1mPWNbMF07ZT1jWzFdO2lmKGMubGVuZ3RoPT0zKXtkPWNbMl19Yi5oZWFkZXJPYmo9S0pVUi5qd3MuSldTLnJlYWRTYWZlSlNPTlN0cmluZyhiNjR1dG91dGY4KGYpKTtiLnBheWxvYWRPYmo9S0pVUi5qd3MuSldTLnJlYWRTYWZlSlNPTlN0cmluZyhiNjR1dG91dGY4KGUpKTtiLmhlYWRlclBQPUpTT04uc3RyaW5naWZ5KGIuaGVhZGVyT2JqLG51bGwsXCIgIFwiKTtpZihiLnBheWxvYWRPYmo9PW51bGwpe2IucGF5bG9hZFBQPWI2NHV0b3V0ZjgoZSl9ZWxzZXtiLnBheWxvYWRQUD1KU09OLnN0cmluZ2lmeShiLnBheWxvYWRPYmosbnVsbCxcIiAgXCIpfWlmKGQhPT11bmRlZmluZWQpe2Iuc2lnSGV4PWI2NHV0b2hleChkKX1yZXR1cm4gYn07S0pVUi5qd3MuSldTLnZlcmlmeUpXVD1mdW5jdGlvbihlLGwscil7dmFyIGQ9S0pVUixqPWQuandzLG89ai5KV1Msbj1vLnJlYWRTYWZlSlNPTlN0cmluZyxwPW8uaW5BcnJheSxmPW8uaW5jbHVkZWRBcnJheTt2YXIgaz1lLnNwbGl0KFwiLlwiKTt2YXIgYz1rWzBdO3ZhciBpPWtbMV07dmFyIHE9YytcIi5cIitpO3ZhciBtPWI2NHV0b2hleChrWzJdKTt2YXIgaD1uKGI2NHV0b3V0ZjgoYykpO3ZhciBnPW4oYjY0dXRvdXRmOChpKSk7aWYoaC5hbGc9PT11bmRlZmluZWQpe3JldHVybiBmYWxzZX1pZihyLmFsZz09PXVuZGVmaW5lZCl7dGhyb3dcImFjY2VwdEZpZWxkLmFsZyBzaGFsbCBiZSBzcGVjaWZpZWRcIn1pZighcChoLmFsZyxyLmFsZykpe3JldHVybiBmYWxzZX1pZihnLmlzcyE9PXVuZGVmaW5lZCYmdHlwZW9mIHIuaXNzPT09XCJvYmplY3RcIil7aWYoIXAoZy5pc3Msci5pc3MpKXtyZXR1cm4gZmFsc2V9fWlmKGcuc3ViIT09dW5kZWZpbmVkJiZ0eXBlb2Ygci5zdWI9PT1cIm9iamVjdFwiKXtpZighcChnLnN1YixyLnN1Yikpe3JldHVybiBmYWxzZX19aWYoZy5hdWQhPT11bmRlZmluZWQmJnR5cGVvZiByLmF1ZD09PVwib2JqZWN0XCIpe2lmKHR5cGVvZiBnLmF1ZD09XCJzdHJpbmdcIil7aWYoIXAoZy5hdWQsci5hdWQpKXtyZXR1cm4gZmFsc2V9fWVsc2V7aWYodHlwZW9mIGcuYXVkPT1cIm9iamVjdFwiKXtpZighZihnLmF1ZCxyLmF1ZCkpe3JldHVybiBmYWxzZX19fX12YXIgYj1qLkludERhdGUuZ2V0Tm93KCk7aWYoci52ZXJpZnlBdCE9PXVuZGVmaW5lZCYmdHlwZW9mIHIudmVyaWZ5QXQ9PT1cIm51bWJlclwiKXtiPXIudmVyaWZ5QXR9aWYoci5ncmFjZVBlcmlvZD09PXVuZGVmaW5lZHx8dHlwZW9mIHIuZ3JhY2VQZXJpb2QhPT1cIm51bWJlclwiKXtyLmdyYWNlUGVyaW9kPTB9aWYoZy5leHAhPT11bmRlZmluZWQmJnR5cGVvZiBnLmV4cD09XCJudW1iZXJcIil7aWYoZy5leHArci5ncmFjZVBlcmlvZDxiKXtyZXR1cm4gZmFsc2V9fWlmKGcubmJmIT09dW5kZWZpbmVkJiZ0eXBlb2YgZy5uYmY9PVwibnVtYmVyXCIpe2lmKGI8Zy5uYmYtci5ncmFjZVBlcmlvZCl7cmV0dXJuIGZhbHNlfX1pZihnLmlhdCE9PXVuZGVmaW5lZCYmdHlwZW9mIGcuaWF0PT1cIm51bWJlclwiKXtpZihiPGcuaWF0LXIuZ3JhY2VQZXJpb2Qpe3JldHVybiBmYWxzZX19aWYoZy5qdGkhPT11bmRlZmluZWQmJnIuanRpIT09dW5kZWZpbmVkKXtpZihnLmp0aSE9PXIuanRpKXtyZXR1cm4gZmFsc2V9fWlmKCFvLnZlcmlmeShlLGwsci5hbGcpKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9O0tKVVIuandzLkpXUy5pbmNsdWRlZEFycmF5PWZ1bmN0aW9uKGIsYSl7dmFyIGM9S0pVUi5qd3MuSldTLmluQXJyYXk7aWYoYj09PW51bGwpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgYiE9PVwib2JqZWN0XCIpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgYi5sZW5ndGghPT1cIm51bWJlclwiKXtyZXR1cm4gZmFsc2V9Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCFjKGJbZF0sYSkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9O0tKVVIuandzLkpXUy5pbkFycmF5PWZ1bmN0aW9uKGQsYil7aWYoYj09PW51bGwpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgYiE9PVwib2JqZWN0XCIpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgYi5sZW5ndGghPT1cIm51bWJlclwiKXtyZXR1cm4gZmFsc2V9Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe2lmKGJbY109PWQpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9O0tKVVIuandzLkpXUy5qd3NhbGcyc2lnYWxnPXtIUzI1NjpcIkhtYWNTSEEyNTZcIixIUzM4NDpcIkhtYWNTSEEzODRcIixIUzUxMjpcIkhtYWNTSEE1MTJcIixSUzI1NjpcIlNIQTI1NndpdGhSU0FcIixSUzM4NDpcIlNIQTM4NHdpdGhSU0FcIixSUzUxMjpcIlNIQTUxMndpdGhSU0FcIixFUzI1NjpcIlNIQTI1NndpdGhFQ0RTQVwiLEVTMzg0OlwiU0hBMzg0d2l0aEVDRFNBXCIsUFMyNTY6XCJTSEEyNTZ3aXRoUlNBYW5kTUdGMVwiLFBTMzg0OlwiU0hBMzg0d2l0aFJTQWFuZE1HRjFcIixQUzUxMjpcIlNIQTUxMndpdGhSU0FhbmRNR0YxXCIsbm9uZTpcIm5vbmVcIix9O0tKVVIuandzLkpXUy5pc1NhZmVKU09OU3RyaW5nPWZ1bmN0aW9uKGMsYixkKXt2YXIgZT1udWxsO3RyeXtlPWpzb25QYXJzZShjKTtpZih0eXBlb2YgZSE9XCJvYmplY3RcIil7cmV0dXJuIDB9aWYoZS5jb25zdHJ1Y3Rvcj09PUFycmF5KXtyZXR1cm4gMH1pZihiKXtiW2RdPWV9cmV0dXJuIDF9Y2F0Y2goYSl7cmV0dXJuIDB9fTtLSlVSLmp3cy5KV1MucmVhZFNhZmVKU09OU3RyaW5nPWZ1bmN0aW9uKGIpe3ZhciBjPW51bGw7dHJ5e2M9anNvblBhcnNlKGIpO2lmKHR5cGVvZiBjIT1cIm9iamVjdFwiKXtyZXR1cm4gbnVsbH1pZihjLmNvbnN0cnVjdG9yPT09QXJyYXkpe3JldHVybiBudWxsfXJldHVybiBjfWNhdGNoKGEpe3JldHVybiBudWxsfX07S0pVUi5qd3MuSldTLmdldEVuY29kZWRTaWduYXR1cmVWYWx1ZUZyb21KV1M9ZnVuY3Rpb24oYil7dmFyIGE9Yi5tYXRjaCgvXlteLl0rXFwuW14uXStcXC4oW14uXSspJC8pO2lmKGE9PW51bGwpe3Rocm93XCJKV1Mgc2lnbmF0dXJlIGlzIG5vdCBhIGZvcm0gb2YgJ0hlYWQuUGF5bG9hZC5TaWdWYWx1ZScuXCJ9cmV0dXJuIGFbMV19O0tKVVIuandzLkpXUy5nZXRKV0t0aHVtYnByaW50PWZ1bmN0aW9uKGQpe2lmKGQua3R5IT09XCJSU0FcIiYmZC5rdHkhPT1cIkVDXCImJmQua3R5IT09XCJvY3RcIil7dGhyb3dcInVuc3VwcG9ydGVkIGFsZ29yaXRobSBmb3IgSldLIFRodW1wcmludFwifXZhciBhPVwie1wiO2lmKGQua3R5PT09XCJSU0FcIil7aWYodHlwZW9mIGQubiE9XCJzdHJpbmdcInx8dHlwZW9mIGQuZSE9XCJzdHJpbmdcIil7dGhyb3dcIndyb25nIG4gYW5kIGUgdmFsdWUgZm9yIFJTQSBrZXlcIn1hKz0nXCJlXCI6XCInK2QuZSsnXCIsJzthKz0nXCJrdHlcIjpcIicrZC5rdHkrJ1wiLCc7YSs9J1wiblwiOlwiJytkLm4rJ1wifSd9ZWxzZXtpZihkLmt0eT09PVwiRUNcIil7aWYodHlwZW9mIGQuY3J2IT1cInN0cmluZ1wifHx0eXBlb2YgZC54IT1cInN0cmluZ1wifHx0eXBlb2YgZC55IT1cInN0cmluZ1wiKXt0aHJvd1wid3JvbmcgY3J2LCB4IGFuZCB5IHZhbHVlIGZvciBFQyBrZXlcIn1hKz0nXCJjcnZcIjpcIicrZC5jcnYrJ1wiLCc7YSs9J1wia3R5XCI6XCInK2Qua3R5KydcIiwnO2ErPSdcInhcIjpcIicrZC54KydcIiwnO2ErPSdcInlcIjpcIicrZC55KydcIn0nfWVsc2V7aWYoZC5rdHk9PT1cIm9jdFwiKXtpZih0eXBlb2YgZC5rIT1cInN0cmluZ1wiKXt0aHJvd1wid3JvbmcgayB2YWx1ZSBmb3Igb2N0KHN5bW1ldHJpYykga2V5XCJ9YSs9J1wia3R5XCI6XCInK2Qua3R5KydcIiwnO2ErPSdcImtcIjpcIicrZC5rKydcIn0nfX19dmFyIGI9cnN0cnRvaGV4KGEpO3ZhciBjPUtKVVIuY3J5cHRvLlV0aWwuaGFzaEhleChiLFwic2hhMjU2XCIpO3ZhciBlPWhleHRvYjY0dShjKTtyZXR1cm4gZX07S0pVUi5qd3MuSW50RGF0ZT17fTtLSlVSLmp3cy5JbnREYXRlLmdldD1mdW5jdGlvbihjKXt2YXIgYj1LSlVSLmp3cy5JbnREYXRlLGQ9Yi5nZXROb3csYT1iLmdldFp1bHU7aWYoYz09XCJub3dcIil7cmV0dXJuIGQoKX1lbHNle2lmKGM9PVwibm93ICsgMWhvdXJcIil7cmV0dXJuIGQoKSs2MCo2MH1lbHNle2lmKGM9PVwibm93ICsgMWRheVwiKXtyZXR1cm4gZCgpKzYwKjYwKjI0fWVsc2V7aWYoYz09XCJub3cgKyAxbW9udGhcIil7cmV0dXJuIGQoKSs2MCo2MCoyNCozMH1lbHNle2lmKGM9PVwibm93ICsgMXllYXJcIil7cmV0dXJuIGQoKSs2MCo2MCoyNCozNjV9ZWxzZXtpZihjLm1hdGNoKC9aJC8pKXtyZXR1cm4gYShjKX1lbHNle2lmKGMubWF0Y2goL15bMC05XSskLykpe3JldHVybiBwYXJzZUludChjKX19fX19fX10aHJvd1widW5zdXBwb3J0ZWQgZm9ybWF0OiBcIitjfTtLSlVSLmp3cy5JbnREYXRlLmdldFp1bHU9ZnVuY3Rpb24oYSl7cmV0dXJuIHp1bHV0b3NlYyhhKX07S0pVUi5qd3MuSW50RGF0ZS5nZXROb3c9ZnVuY3Rpb24oKXt2YXIgYT1+fihuZXcgRGF0ZSgpLzEwMDApO3JldHVybiBhfTtLSlVSLmp3cy5JbnREYXRlLmludERhdGUyVVRDU3RyaW5nPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBEYXRlKGEqMTAwMCk7cmV0dXJuIGIudG9VVENTdHJpbmcoKX07S0pVUi5qd3MuSW50RGF0ZS5pbnREYXRlMlp1bHU9ZnVuY3Rpb24oZSl7dmFyIGk9bmV3IERhdGUoZSoxMDAwKSxoPShcIjAwMDBcIitpLmdldFVUQ0Z1bGxZZWFyKCkpLnNsaWNlKC00KSxnPShcIjAwXCIrKGkuZ2V0VVRDTW9udGgoKSsxKSkuc2xpY2UoLTIpLGI9KFwiMDBcIitpLmdldFVUQ0RhdGUoKSkuc2xpY2UoLTIpLGE9KFwiMDBcIitpLmdldFVUQ0hvdXJzKCkpLnNsaWNlKC0yKSxjPShcIjAwXCIraS5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSxmPShcIjAwXCIraS5nZXRVVENTZWNvbmRzKCkpLnNsaWNlKC0yKTtyZXR1cm4gaCtnK2IrYStjK2YrXCJaXCJ9O1xuZXhwb3J0IHsgU2VjdXJlUmFuZG9tIH07XG5leHBvcnQgeyBybmdfc2VlZF90aW1lIH07XG5cbmV4cG9ydCB7IEJpZ0ludGVnZXIgfTtcbmV4cG9ydCB7IFJTQUtleSB9O1xuZXhwb3J0IGNvbnN0IHsgRURTQSB9ID0gS0pVUi5jcnlwdG87XG5leHBvcnQgY29uc3QgeyBEU0EgfSA9IEtKVVIuY3J5cHRvO1xuZXhwb3J0IGNvbnN0IHsgU2lnbmF0dXJlIH0gPSBLSlVSLmNyeXB0bztcbmV4cG9ydCBjb25zdCB7IE1lc3NhZ2VEaWdlc3QgfSA9ICBLSlVSLmNyeXB0bztcbmV4cG9ydCBjb25zdCB7IE1hYyB9ID0gS0pVUi5jcnlwdG87XG5leHBvcnQgY29uc3QgeyBDaXBoZXIgfSA9ICBLSlVSLmNyeXB0bztcbmV4cG9ydCB7IEtFWVVUSUwgfTtcbmV4cG9ydCB7IEFTTjFIRVggfTtcbmV4cG9ydCB7IFg1MDkgfTtcbmV4cG9ydCB7IENyeXB0b0pTIH07XG5cbi8vIGV4dC9iYXNlNjQuanNcbmV4cG9ydCB7IGI2NHRvaGV4IH07XG5leHBvcnQgeyBiNjR0b0JBIH07XG5cbi8vIGJhc2U2NHguanNcbmV4cG9ydCB7IHN0b0JBIH07XG5leHBvcnQgeyBCQXRvcyB9O1xuZXhwb3J0IHsgQkF0b2hleCB9O1xuZXhwb3J0IHsgc3RvaGV4IH07XG5leHBvcnQgeyBzdG9iNjQgfTtcbmV4cG9ydCB7IHN0b2I2NHUgfTtcbmV4cG9ydCB7IGI2NHV0b3MgfTtcbmV4cG9ydCB7IGI2NHRvYjY0dSB9O1xuZXhwb3J0IHsgYjY0dXRvYjY0IH07XG5leHBvcnQgeyBoZXgyYjY0IH07XG5leHBvcnQgeyBoZXh0b2I2NHUgfTtcbmV4cG9ydCB7IGI2NHV0b2hleCB9O1xuZXhwb3J0IHsgdXRmOHRvYjY0dSB9O1xuZXhwb3J0IHsgYjY0dXRvdXRmOCB9O1xuZXhwb3J0IHsgdXRmOHRvYjY0IH07XG5leHBvcnQgeyBiNjR0b3V0ZjggfTtcbmV4cG9ydCB7IHV0Zjh0b2hleCB9O1xuZXhwb3J0IHsgaGV4dG91dGY4IH07XG5leHBvcnQgeyBoZXh0b3JzdHIgfTtcbmV4cG9ydCB7IHJzdHJ0b2hleCB9O1xuZXhwb3J0IHsgaGV4dG9iNjQgfTtcbmV4cG9ydCB7IGhleHRvYjY0bmwgfTtcbmV4cG9ydCB7IGI2NG5sdG9oZXggfTtcbmV4cG9ydCB7IGhleHRvcGVtIH07XG5leHBvcnQgeyBwZW10b2hleCB9O1xuZXhwb3J0IHsgaGV4dG9BcnJheUJ1ZmZlciB9O1xuZXhwb3J0IHsgQXJyYXlCdWZmZXJ0b2hleCB9O1xuZXhwb3J0IHsgenVsdXRvbXNlYyB9O1xuZXhwb3J0IHsgenVsdXRvc2VjIH07XG5leHBvcnQgeyB6dWx1dG9kYXRlIH07XG5leHBvcnQgeyBkYXRldG96dWx1IH07XG5leHBvcnQgeyB1cmljbXB0b2hleCB9O1xuZXhwb3J0IHsgaGV4dG91cmljbXAgfTtcbmV4cG9ydCB7IGlwdjZ0b2hleCB9O1xuZXhwb3J0IHsgaGV4dG9pcHY2IH07XG5leHBvcnQgeyBoZXh0b2lwIH07XG5leHBvcnQgeyBpcHRvaGV4IH07XG5leHBvcnQgeyBlbmNvZGVVUklDb21wb25lbnRBbGwgfTtcbmV4cG9ydCB7IG5ld2xpbmVfdG9Vbml4IH07XG5leHBvcnQgeyBuZXdsaW5lX3RvRG9zIH07XG5leHBvcnQgeyBoZXh0b3Bvc2hleCB9O1xuZXhwb3J0IHsgaW50YXJ5c3RydG9oZXggfTtcbmV4cG9ydCB7IHN0cmRpZmZpZHggfTtcblxuLy8gbmFtZSBzcGFjZXNcbmV4cG9ydCB7IEtKVVIgfTtcbmNvbnN0IF9jcnlwdG8gPSAgS0pVUi5jcnlwdG87XG5leHBvcnQgeyBfY3J5cHRvIGFzIGNyeXB0byB9O1xuZXhwb3J0IGNvbnN0IHsgYXNuMSB9ID0gS0pVUjtcbmV4cG9ydCBjb25zdCB7IGp3cyB9ID0gS0pVUjtcbmV4cG9ydCBjb25zdCB7IGxhbmcgfSA9IEtKVVI7XG5cblxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL3NoaW1cIik7XG5cbnJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWVcIik7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL2ZuL3JlZ2V4cC9lc2NhcGVcIik7XG5cbmlmIChnbG9iYWwuX2JhYmVsUG9seWZpbGwpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwib25seSBvbmUgaW5zdGFuY2Ugb2YgYmFiZWwtcG9seWZpbGwgaXMgYWxsb3dlZFwiKTtcbn1cbmdsb2JhbC5fYmFiZWxQb2x5ZmlsbCA9IHRydWU7XG5cbnZhciBERUZJTkVfUFJPUEVSVFkgPSBcImRlZmluZVByb3BlcnR5XCI7XG5mdW5jdGlvbiBkZWZpbmUoTywga2V5LCB2YWx1ZSkge1xuICBPW2tleV0gfHwgT2JqZWN0W0RFRklORV9QUk9QRVJUWV0oTywga2V5LCB7XG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9KTtcbn1cblxuZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIFwicGFkTGVmdFwiLCBcIlwiLnBhZFN0YXJ0KTtcbmRlZmluZShTdHJpbmcucHJvdG90eXBlLCBcInBhZFJpZ2h0XCIsIFwiXCIucGFkRW5kKTtcblxuXCJwb3AscmV2ZXJzZSxzaGlmdCxrZXlzLHZhbHVlcyxlbnRyaWVzLGluZGV4T2YsZXZlcnksc29tZSxmb3JFYWNoLG1hcCxmaWx0ZXIsZmluZCxmaW5kSW5kZXgsaW5jbHVkZXMsam9pbixzbGljZSxjb25jYXQscHVzaCxzcGxpY2UsdW5zaGlmdCxzb3J0LGxhc3RJbmRleE9mLHJlZHVjZSxyZWR1Y2VSaWdodCxjb3B5V2l0aGluLGZpbGxcIi5zcGxpdChcIixcIikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIFtdW2tleV0gJiYgZGVmaW5lKEFycmF5LCBrZXksIEZ1bmN0aW9uLmNhbGwuYmluZChbXVtrZXldKSk7XG59KTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG4gKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cbiAqIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcbiAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG4gICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcbiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcbiAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcbiAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG4gICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGdsb2JhbC5wcm9jZXNzID09PSBcIm9iamVjdFwiICYmIGdsb2JhbC5wcm9jZXNzLmRvbWFpbikge1xuICAgICAgaW52b2tlID0gZ2xvYmFsLnByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBydW50aW1lLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvci5yZXR1cm4pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xufSkoXG4gIC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcbiAgLy8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG4gIC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG4gIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDpcbiAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpc1xuKTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsoXG4gICAgICB1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpXG4gICAgKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHtfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH19XG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWBcbiAgICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGtNYXhMZW5ndGggKCkge1xuICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgICA/IDB4N2ZmZmZmZmZcbiAgICA6IDB4M2ZmZmZmZmZcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCcpXG4gIH1cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aClcbiAgICB9XG4gICAgdGhhdC5sZW5ndGggPSBsZW5ndGhcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iaikpIHtcbiAgICB2YXIgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbilcblxuICAgIGlmICh0aGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoYXRcbiAgICB9XG5cbiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIHRoYXRcbiAgfVxuXG4gIGlmIChvYmopIHtcbiAgICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgaXNuYW4ob2JqLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCAwKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqKVxuICAgIH1cblxuICAgIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iai5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwga01heExlbmd0aCgpYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCBhbmQgYGlzLWJ1ZmZlcmAgKGluIFNhZmFyaSA1LTcpIHRvIGRldGVjdFxuLy8gQnVmZmVyIGluc3RhbmNlcy5cbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQxNiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCAyKTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSAmICgweGZmIDw8ICg4ICogKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkpKSkgPj4+XG4gICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDhcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgNCk7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmXG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG4gIHZhciBpXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDAgfHwgIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gYXNjZW5kaW5nIGNvcHkgZnJvbSBzdGFydFxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsIGVuY29kaW5nKS50b1N0cmluZygpKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBpc25hbiAodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IHZhbCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2NvcmUucmVnZXhwLmVzY2FwZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuUmVnRXhwLmVzY2FwZTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBtc2cpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnbnVtYmVyJyAmJiBjb2YoaXQpICE9ICdOdW1iZXInKSB0aHJvdyBUeXBlRXJyb3IobXNnKTtcbiAgcmV0dXJuICtpdDtcbn07XG4iLCIvLyAyMi4xLjMuMzEgQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgVU5TQ09QQUJMRVMgPSByZXF1aXJlKCcuL193a3MnKSgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuaWYgKEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkgcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciB0byA9IHRvQWJzb2x1dGVJbmRleCh0YXJnZXQsIGxlbik7XG4gIHZhciBmcm9tID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBjb3VudCA9IE1hdGgubWluKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbikpIC0gZnJvbSwgbGVuIC0gdG8pO1xuICB2YXIgaW5jID0gMTtcbiAgaWYgKGZyb20gPCB0byAmJiB0byA8IGZyb20gKyBjb3VudCkge1xuICAgIGluYyA9IC0xO1xuICAgIGZyb20gKz0gY291bnQgLSAxO1xuICAgIHRvICs9IGNvdW50IC0gMTtcbiAgfVxuICB3aGlsZSAoY291bnQtLSA+IDApIHtcbiAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gKz0gaW5jO1xuICAgIGZyb20gKz0gaW5jO1xuICB9IHJldHVybiBPO1xufTtcbiIsIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlciwgSVRFUkFUT1IpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3JPZihpdGVyLCBmYWxzZSwgcmVzdWx0LnB1c2gsIHJlc3VsdCwgSVRFUkFUT1IpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBjYWxsYmFja2ZuLCBhTGVuLCBtZW1vLCBpc1JpZ2h0KSB7XG4gIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGF0KTtcbiAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgaW5kZXggPSBpc1JpZ2h0ID8gbGVuZ3RoIC0gMSA6IDA7XG4gIHZhciBpID0gaXNSaWdodCA/IC0xIDogMTtcbiAgaWYgKGFMZW4gPCAyKSBmb3IgKDs7KSB7XG4gICAgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggKz0gaTtcbiAgICBpZiAoaXNSaWdodCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgfVxuICB9XG4gIGZvciAoO2lzUmlnaHQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgfVxuICByZXR1cm4gbWVtbztcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEYsIGxlbiwgYXJncykge1xuICBpZiAoIShsZW4gaW4gZmFjdG9yaWVzKSkge1xuICAgIGZvciAodmFyIG4gPSBbXSwgaSA9IDA7IGkgPCBsZW47IGkrKykgbltpXSA9ICdhWycgKyBpICsgJ10nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgIGZhY3Rvcmllc1tsZW5dID0gRnVuY3Rpb24oJ0YsYScsICdyZXR1cm4gbmV3IEYoJyArIG4uam9pbignLCcpICsgJyknKTtcbiAgfSByZXR1cm4gZmFjdG9yaWVzW2xlbl0oRiwgYXJncyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmJpbmQgfHwgZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgZm4gPSBhRnVuY3Rpb24odGhpcyk7XG4gIHZhciBwYXJ0QXJncyA9IGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgYm91bmQgPSBmdW5jdGlvbiAoLyogYXJncy4uLiAqLykge1xuICAgIHZhciBhcmdzID0gcGFydEFyZ3MuY29uY2F0KGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGJvdW5kID8gY29uc3RydWN0KGZuLCBhcmdzLmxlbmd0aCwgYXJncykgOiBpbnZva2UoZm4sIGFyZ3MsIHRoYXQpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoZm4ucHJvdG90eXBlKSkgYm91bmQucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICByZXR1cm4gYm91bmQ7XG59O1xuIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGZhc3RLZXkgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTSVpFID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gIHZhciBlbnRyeTtcbiAgaWYgKGluZGV4ICE9PSAnRicpIHJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvciAoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgaWYgKGVudHJ5LmsgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKGVudHJ5LnApIGVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uO1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZiAodGhhdC5fZiA9PSBlbnRyeSkgdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2O1xuICAgICAgICAgIHRoYXRbU0laRV0tLTtcbiAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2YpIHtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgIHZhciBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcbiAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcbiAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG4gICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcbiAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG4gICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYgKHByZXYpIHByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcbiAgICB9IHJldHVybiB0aGF0O1xuICB9LFxuICBnZXRFbnRyeTogZ2V0RW50cnksXG4gIHNldFN0cm9uZzogZnVuY3Rpb24gKEMsIE5BTUUsIElTX01BUCkge1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIga2luZCA9IHRoYXQuX2s7XG4gICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sO1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmICghdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKSB7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcbiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG4gICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGdldFdlYWsgPSByZXF1aXJlKCcuL19tZXRhJykuZ2V0V2VhaztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKTtcbnZhciAkaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgYXJyYXlGaW5kID0gY3JlYXRlQXJyYXlNZXRob2QoNSk7XG52YXIgYXJyYXlGaW5kSW5kZXggPSBjcmVhdGVBcnJheU1ldGhvZCg2KTtcbnZhciBpZCA9IDA7XG5cbi8vIGZhbGxiYWNrIGZvciB1bmNhdWdodCBmcm96ZW4ga2V5c1xudmFyIHVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAodGhhdCkge1xuICByZXR1cm4gdGhhdC5fbCB8fCAodGhhdC5fbCA9IG5ldyBVbmNhdWdodEZyb3plblN0b3JlKCkpO1xufTtcbnZhciBVbmNhdWdodEZyb3plblN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmEgPSBbXTtcbn07XG52YXIgZmluZFVuY2F1Z2h0RnJvemVuID0gZnVuY3Rpb24gKHN0b3JlLCBrZXkpIHtcbiAgcmV0dXJuIGFycmF5RmluZChzdG9yZS5hLCBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaXRbMF0gPT09IGtleTtcbiAgfSk7XG59O1xuVW5jYXVnaHRGcm96ZW5TdG9yZS5wcm90b3R5cGUgPSB7XG4gIGdldDogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgcmV0dXJuIGVudHJ5WzFdO1xuICB9LFxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gISFmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgZW50cnlbMV0gPSB2YWx1ZTtcbiAgICBlbHNlIHRoaXMuYS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0sXG4gICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGluZGV4ID0gYXJyYXlGaW5kSW5kZXgodGhpcy5hLCBmdW5jdGlvbiAoaXQpIHtcbiAgICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICAgIH0pO1xuICAgIGlmICh+aW5kZXgpIHRoaXMuYS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAhIX5pbmRleDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAvLyBjb2xsZWN0aW9uIHR5cGVcbiAgICAgIHRoYXQuX2kgPSBpZCsrOyAgICAgIC8vIGNvbGxlY3Rpb24gaWRcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7IC8vIGxlYWsgc3RvcmUgZm9yIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RzXG4gICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjMuMy4yIFdlYWtNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy40LjMuMyBXZWFrU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSkgJiYgZGVsZXRlIGRhdGFbdGhpcy5faV07XG4gICAgICB9LFxuICAgICAgLy8gMjMuMy4zLjQgV2Vha01hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjQuMy40IFdlYWtTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSkuaGFzKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZGF0YSA9IGdldFdlYWsoYW5PYmplY3Qoa2V5KSwgdHJ1ZSk7XG4gICAgaWYgKGRhdGEgPT09IHRydWUpIHVuY2F1Z2h0RnJvemVuU3RvcmUodGhhdCkuc2V0KGtleSwgdmFsdWUpO1xuICAgIGVsc2UgZGF0YVt0aGF0Ll9pXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGF0O1xuICB9LFxuICB1ZnN0b3JlOiB1bmNhdWdodEZyb3plblN0b3JlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJGl0ZXJEZXRlY3QgPSByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSwgd3JhcHBlciwgbWV0aG9kcywgY29tbW9uLCBJU19NQVAsIElTX1dFQUspIHtcbiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07XG4gIHZhciBDID0gQmFzZTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTtcbiAgdmFyIE8gPSB7fTtcbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgZm4gPSBwcm90b1tLRVldO1xuICAgIHJlZGVmaW5lKHByb3RvLCBLRVksXG4gICAgICBLRVkgPT0gJ2RlbGV0ZScgPyBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2hhcycgPyBmdW5jdGlvbiBoYXMoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2dldCcgPyBmdW5jdGlvbiBnZXQoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyB1bmRlZmluZWQgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdhZGQnID8gZnVuY3Rpb24gYWRkKGEpIHsgZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpOyByZXR1cm4gdGhpczsgfVxuICAgICAgICA6IGZ1bmN0aW9uIHNldChhLCBiKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhLCBiKTsgcmV0dXJuIHRoaXM7IH1cbiAgICApO1xuICB9O1xuICBpZiAodHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBDKCkuZW50cmllcygpLm5leHQoKTtcbiAgfSkpKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgLy8gZWFybHkgaW1wbGVtZW50YXRpb25zIG5vdCBzdXBwb3J0cyBjaGFpbmluZ1xuICAgIHZhciBIQVNOVF9DSEFJTklORyA9IGluc3RhbmNlW0FEREVSXShJU19XRUFLID8ge30gOiAtMCwgMSkgIT0gaW5zdGFuY2U7XG4gICAgLy8gVjggfiAgQ2hyb21pdW0gNDAtIHdlYWstY29sbGVjdGlvbnMgdGhyb3dzIG9uIHByaW1pdGl2ZXMsIGJ1dCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgdmFyIFRIUk9XU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5oYXMoMSk7IH0pO1xuICAgIC8vIG1vc3QgZWFybHkgaW1wbGVtZW50YXRpb25zIGRvZXNuJ3Qgc3VwcG9ydHMgaXRlcmFibGVzLCBtb3N0IG1vZGVybiAtIG5vdCBjbG9zZSBpdCBjb3JyZWN0bHlcbiAgICB2YXIgQUNDRVBUX0lURVJBQkxFUyA9ICRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7IG5ldyBDKGl0ZXIpOyB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgICB2YXIgaW5kZXggPSA1O1xuICAgICAgd2hpbGUgKGluZGV4LS0pICRpbnN0YW5jZVtBRERFUl0oaW5kZXgsIGluZGV4KTtcbiAgICAgIHJldHVybiAhJGluc3RhbmNlLmhhcygtMCk7XG4gICAgfSk7XG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSk7XG4gICAgICAgIHZhciB0aGF0ID0gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UoKSwgdGFyZ2V0LCBDKTtcbiAgICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQy5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgIHByb3RvLmNvbnN0cnVjdG9yID0gQztcbiAgICB9XG4gICAgaWYgKFRIUk9XU19PTl9QUklNSVRJVkVTIHx8IEJVR0dZX1pFUk8pIHtcbiAgICAgIGZpeE1ldGhvZCgnZGVsZXRlJyk7XG4gICAgICBmaXhNZXRob2QoJ2hhcycpO1xuICAgICAgSVNfTUFQICYmIGZpeE1ldGhvZCgnZ2V0Jyk7XG4gICAgfVxuICAgIGlmIChCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKSBmaXhNZXRob2QoQURERVIpO1xuICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgc2hvdWxkIG5vdCBjb250YWlucyAuY2xlYXIgbWV0aG9kXG4gICAgaWYgKElTX1dFQUsgJiYgcHJvdG8uY2xlYXIpIGRlbGV0ZSBwcm90by5jbGVhcjtcbiAgfVxuXG4gIHNldFRvU3RyaW5nVGFnKEMsIE5BTUUpO1xuXG4gIE9bTkFNRV0gPSBDO1xuICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChDICE9IEJhc2UpLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi41LjUnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG52YXIgJHRvSVNPU3RyaW5nID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBseiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIG51bSA+IDkgPyBudW0gOiAnMCcgKyBudW07XG59O1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGQgPSB0aGlzO1xuICB2YXIgeSA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgcyA9IHkgPCAwID8gJy0nIDogeSA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICctJyArIGx6KGQuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsgbHooZC5nZXRVVENEYXRlKCkpICtcbiAgICAnVCcgKyBseihkLmdldFVUQ0hvdXJzKCkpICsgJzonICsgbHooZC5nZXRVVENNaW51dGVzKCkpICtcbiAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbn0gOiAkdG9JU09TdHJpbmc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIE5VTUJFUiA9ICdudW1iZXInO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChoaW50KSB7XG4gIGlmIChoaW50ICE9PSAnc3RyaW5nJyAmJiBoaW50ICE9PSBOVU1CRVIgJiYgaGludCAhPT0gJ2RlZmF1bHQnKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBoaW50Jyk7XG4gIHJldHVybiB0b1ByaW1pdGl2ZShhbk9iamVjdCh0aGlzKSwgaGludCAhPSBOVU1CRVIpO1xufTtcbiIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG4iLCIvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIGlmIChnZXRTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTtcbiAgICB2YXIgaXNFbnVtID0gcElFLmY7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKHN5bWJvbHMubGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gfHwgKGdsb2JhbFtuYW1lXSA9IHt9KSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pO1xuICB2YXIga2V5LCBvd24sIG91dCwgZXhwO1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gKG93biA/IHRhcmdldCA6IHNvdXJjZSlba2V5XTtcbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIGV4cCA9IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICBpZiAodGFyZ2V0KSByZWRlZmluZSh0YXJnZXQsIGtleSwgb3V0LCB0eXBlICYgJGV4cG9ydC5VKTtcbiAgICAvLyBleHBvcnRcbiAgICBpZiAoZXhwb3J0c1trZXldICE9IG91dCkgaGlkZShleHBvcnRzLCBrZXksIGV4cCk7XG4gICAgaWYgKElTX1BST1RPICYmIGV4cFByb3RvW2tleV0gIT0gb3V0KSBleHBQcm90b1trZXldID0gb3V0O1xuICB9XG59O1xuZ2xvYmFsLmNvcmUgPSBjb3JlO1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwidmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIHJlID0gLy4vO1xuICB0cnkge1xuICAgICcvLi8nW0tFWV0ocmUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICEnLy4vJ1tLRVldKHJlKTtcbiAgICB9IGNhdGNoIChmKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gdHJ1ZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjKSB7XG4gIHZhciBTWU1CT0wgPSB3a3MoS0VZKTtcbiAgdmFyIGZucyA9IGV4ZWMoZGVmaW5lZCwgU1lNQk9MLCAnJ1tLRVldKTtcbiAgdmFyIHN0cmZuID0gZm5zWzBdO1xuICB2YXIgcnhmbiA9IGZuc1sxXTtcbiAgaWYgKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSkpIHtcbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmZuKTtcbiAgICBoaWRlKFJlZ0V4cC5wcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcnhmbi5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMpOyB9XG4gICAgKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtRmxhdHRlbkludG9BcnJheVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcblxuZnVuY3Rpb24gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgdmFyIHRhcmdldEluZGV4ID0gc3RhcnQ7XG4gIHZhciBzb3VyY2VJbmRleCA9IDA7XG4gIHZhciBtYXBGbiA9IG1hcHBlciA/IGN0eChtYXBwZXIsIHRoaXNBcmcsIDMpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBzcHJlYWRhYmxlO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBzcHJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoaXNPYmplY3QoZWxlbWVudCkpIHtcbiAgICAgICAgc3ByZWFkYWJsZSA9IGVsZW1lbnRbSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICAgICAgICBzcHJlYWRhYmxlID0gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNwcmVhZGFibGUgJiYgZGVwdGggPiAwKSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBlbGVtZW50LCB0b0xlbmd0aChlbGVtZW50Lmxlbmd0aCksIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAweDFmZmZmZmZmZmZmZmZmKSB0aHJvdyBUeXBlRXJyb3IoKTtcbiAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgfVxuICAgIHNvdXJjZUluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIHRhcmdldEluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG4iLCJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCB0YXJnZXQsIEMpIHtcbiAgdmFyIFMgPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIHZhciBQO1xuICBpZiAoUyAhPT0gQyAmJiB0eXBlb2YgUyA9PSAnZnVuY3Rpb24nICYmIChQID0gUy5wcm90b3R5cGUpICE9PSBDLnByb3RvdHlwZSAmJiBpc09iamVjdChQKSAmJiBzZXRQcm90b3R5cGVPZikge1xuICAgIHNldFByb3RvdHlwZU9mKHRoYXQsIFApO1xuICB9IHJldHVybiB0aGF0O1xufTtcbiIsIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsIi8vIDcuMi44IElzUmVnRXhwKGFyZ3VtZW50KVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNvZihpdCkgPT0gJ1JlZ0V4cCcpO1xufTtcbiIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCIvLyAyMC4yLjIuMTQgTWF0aC5leHBtMSh4KVxudmFyICRleHBtMSA9IE1hdGguZXhwbTE7XG5tb2R1bGUuZXhwb3J0cyA9ICghJGV4cG0xXG4gIC8vIE9sZCBGRiBidWdcbiAgfHwgJGV4cG0xKDEwKSA+IDIyMDI1LjQ2NTc5NDgwNjcxOSB8fCAkZXhwbTEoMTApIDwgMjIwMjUuNDY1Nzk0ODA2NzE2NTE2OFxuICAvLyBUb3IgQnJvd3NlciBidWdcbiAgfHwgJGV4cG0xKC0yZS0xNykgIT0gLTJlLTE3XG4pID8gZnVuY3Rpb24gZXhwbTEoeCkge1xuICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiB4ID4gLTFlLTYgJiYgeCA8IDFlLTYgPyB4ICsgeCAqIHggLyAyIDogTWF0aC5leHAoeCkgLSAxO1xufSA6ICRleHBtMTtcbiIsIi8vIDIwLjIuMi4xNiBNYXRoLmZyb3VuZCh4KVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBFUFNJTE9OID0gcG93KDIsIC01Mik7XG52YXIgRVBTSUxPTjMyID0gcG93KDIsIC0yMyk7XG52YXIgTUFYMzIgPSBwb3coMiwgMTI3KSAqICgyIC0gRVBTSUxPTjMyKTtcbnZhciBNSU4zMiA9IHBvdygyLCAtMTI2KTtcblxudmFyIHJvdW5kVGllc1RvRXZlbiA9IGZ1bmN0aW9uIChuKSB7XG4gIHJldHVybiBuICsgMSAvIEVQU0lMT04gLSAxIC8gRVBTSUxPTjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24gZnJvdW5kKHgpIHtcbiAgdmFyICRhYnMgPSBNYXRoLmFicyh4KTtcbiAgdmFyICRzaWduID0gc2lnbih4KTtcbiAgdmFyIGEsIHJlc3VsdDtcbiAgaWYgKCRhYnMgPCBNSU4zMikgcmV0dXJuICRzaWduICogcm91bmRUaWVzVG9FdmVuKCRhYnMgLyBNSU4zMiAvIEVQU0lMT04zMikgKiBNSU4zMiAqIEVQU0lMT04zMjtcbiAgYSA9ICgxICsgRVBTSUxPTjMyIC8gRVBTSUxPTikgKiAkYWJzO1xuICByZXN1bHQgPSBhIC0gKGEgLSAkYWJzKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAocmVzdWx0ID4gTUFYMzIgfHwgcmVzdWx0ICE9IHJlc3VsdCkgcmV0dXJuICRzaWduICogSW5maW5pdHk7XG4gIHJldHVybiAkc2lnbiAqIHJlc3VsdDtcbn07XG4iLCIvLyAyMC4yLjIuMjAgTWF0aC5sb2cxcCh4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmxvZzFwIHx8IGZ1bmN0aW9uIGxvZzFwKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID4gLTFlLTggJiYgeCA8IDFlLTggPyB4IC0geCAqIHggLyAyIDogTWF0aC5sb2coMSArIHgpO1xufTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zY2FsZSB8fCBmdW5jdGlvbiBzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpIHtcbiAgaWYgKFxuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDBcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IHggIT0geFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgaW5Mb3cgIT0gaW5Mb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IGluSGlnaCAhPSBpbkhpZ2hcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dExvdyAhPSBvdXRMb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIHx8IG91dEhpZ2ggIT0gb3V0SGlnaFxuICApIHJldHVybiBOYU47XG4gIGlmICh4ID09PSBJbmZpbml0eSB8fCB4ID09PSAtSW5maW5pdHkpIHJldHVybiB4O1xuICByZXR1cm4gKHggLSBpbkxvdykgKiAob3V0SGlnaCAtIG91dExvdykgLyAoaW5IaWdoIC0gaW5Mb3cpICsgb3V0TG93O1xufTtcbiIsIi8vIDIwLjIuMi4yOCBNYXRoLnNpZ24oeClcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uIHNpZ24oeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSA9PSAwIHx8IHggIT0geCA/IHggOiB4IDwgMCA/IC0xIDogMTtcbn07XG4iLCJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG4iLCJ2YXIgTWFwID0gcmVxdWlyZSgnLi9lczYubWFwJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdtZXRhZGF0YScpO1xudmFyIHN0b3JlID0gc2hhcmVkLnN0b3JlIHx8IChzaGFyZWQuc3RvcmUgPSBuZXcgKHJlcXVpcmUoJy4vZXM2LndlYWstbWFwJykpKCkpO1xuXG52YXIgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgY3JlYXRlKSB7XG4gIHZhciB0YXJnZXRNZXRhZGF0YSA9IHN0b3JlLmdldCh0YXJnZXQpO1xuICBpZiAoIXRhcmdldE1ldGFkYXRhKSB7XG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgc3RvcmUuc2V0KHRhcmdldCwgdGFyZ2V0TWV0YWRhdGEgPSBuZXcgTWFwKCkpO1xuICB9XG4gIHZhciBrZXlNZXRhZGF0YSA9IHRhcmdldE1ldGFkYXRhLmdldCh0YXJnZXRLZXkpO1xuICBpZiAoIWtleU1ldGFkYXRhKSB7XG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgdGFyZ2V0TWV0YWRhdGEuc2V0KHRhcmdldEtleSwga2V5TWV0YWRhdGEgPSBuZXcgTWFwKCkpO1xuICB9IHJldHVybiBrZXlNZXRhZGF0YTtcbn07XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSk7XG59O1xudmFyIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBmYWxzZSk7XG4gIHJldHVybiBtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIHRydWUpLnNldChNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSk7XG59O1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5KSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAodGFyZ2V0LCB0YXJnZXRLZXksIGZhbHNlKTtcbiAgdmFyIGtleXMgPSBbXTtcbiAgaWYgKG1ldGFkYXRhTWFwKSBtZXRhZGF0YU1hcC5mb3JFYWNoKGZ1bmN0aW9uIChfLCBrZXkpIHsga2V5cy5wdXNoKGtleSk7IH0pO1xuICByZXR1cm4ga2V5cztcbn07XG52YXIgdG9NZXRhS2V5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG52YXIgZXhwID0gZnVuY3Rpb24gKE8pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgTyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc3RvcmU6IHN0b3JlLFxuICBtYXA6IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAsXG4gIGhhczogb3JkaW5hcnlIYXNPd25NZXRhZGF0YSxcbiAgZ2V0OiBvcmRpbmFyeUdldE93bk1ldGFkYXRhLFxuICBzZXQ6IG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEsXG4gIGtleXM6IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzLFxuICBrZXk6IHRvTWV0YUtleSxcbiAgZXhwOiBleHBcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjIuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlLCAuLi4pXG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIGlmIChpc0VudW0uY2FsbChTLCBrZXkgPSBrZXlzW2orK10pKSBUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiIsIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBGb3JjZWQgcmVwbGFjZW1lbnQgcHJvdG90eXBlIGFjY2Vzc29ycyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKSB8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBLID0gTWF0aC5yYW5kb20oKTtcbiAgLy8gSW4gRkYgdGhyb3dzIG9ubHkgZGVmaW5lIG1ldGhvZHNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmLCBuby11c2VsZXNzLWNhbGxcbiAgX19kZWZpbmVTZXR0ZXJfXy5jYWxsKG51bGwsIEssIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gIGRlbGV0ZSByZXF1aXJlKCcuL19nbG9iYWwnKVtLXTtcbn0pO1xuIiwidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcbiIsIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsIi8vIG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2NlcHQgcHJpbWl0aXZlc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgZXhlYykge1xuICB2YXIgZm4gPSAoY29yZS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV07XG4gIHZhciBleHAgPSB7fTtcbiAgZXhwW0tFWV0gPSBleGVjKGZuKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7XG59O1xuIiwidmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBpc0VudW0gPSByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlzRW50cmllcykge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoaXQpO1xuICAgIHZhciBrZXlzID0gZ2V0S2V5cyhPKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoTywga2V5ID0ga2V5c1tpKytdKSkge1xuICAgICAgcmVzdWx0LnB1c2goaXNFbnRyaWVzID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcbiIsIi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIFJlZmxlY3QgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBSZWZsZWN0ICYmIFJlZmxlY3Qub3duS2V5cyB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ09QTi5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICByZXR1cm4gZ2V0U3ltYm9scyA/IGtleXMuY29uY2F0KGdldFN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwidmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VGbG9hdDtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcblxubW9kdWxlLmV4cG9ydHMgPSAxIC8gJHBhcnNlRmxvYXQocmVxdWlyZSgnLi9fc3RyaW5nLXdzJykgKyAnLTAnKSAhPT0gLUluZmluaXR5ID8gZnVuY3Rpb24gcGFyc2VGbG9hdChzdHIpIHtcbiAgdmFyIHN0cmluZyA9ICR0cmltKFN0cmluZyhzdHIpLCAzKTtcbiAgdmFyIHJlc3VsdCA9ICRwYXJzZUZsb2F0KHN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgc3RyaW5nLmNoYXJBdCgwKSA9PSAnLScgPyAtMCA6IHJlc3VsdDtcbn0gOiAkcGFyc2VGbG9hdDtcbiIsInZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wYXJzZUludDtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcbnZhciB3cyA9IHJlcXVpcmUoJy4vX3N0cmluZy13cycpO1xudmFyIGhleCA9IC9eWy0rXT8wW3hYXS87XG5cbm1vZHVsZS5leHBvcnRzID0gJHBhcnNlSW50KHdzICsgJzA4JykgIT09IDggfHwgJHBhcnNlSW50KHdzICsgJzB4MTYnKSAhPT0gMjIgPyBmdW5jdGlvbiBwYXJzZUludChzdHIsIHJhZGl4KSB7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMyk7XG4gIHJldHVybiAkcGFyc2VJbnQoc3RyaW5nLCAocmFkaXggPj4+IDApIHx8IChoZXgudGVzdChzdHJpbmcpID8gMTYgOiAxMCkpO1xufSA6ICRwYXJzZUludDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgc2FmZSkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSByZWRlZmluZSh0YXJnZXQsIGtleSwgc3JjW2tleV0sIHNhZmUpO1xuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFNSQyA9IHJlcXVpcmUoJy4vX3VpZCcpKCdzcmMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IEZ1bmN0aW9uW1RPX1NUUklOR107XG52YXIgVFBMID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gJHRvU3RyaW5nLmNhbGwoaXQpO1xufTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsLCBzYWZlKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZiAoT1trZXldID09PSB2YWwpIHJldHVybjtcbiAgaWYgKGlzRnVuY3Rpb24pIGhhcyh2YWwsIFNSQykgfHwgaGlkZSh2YWwsIFNSQywgT1trZXldID8gJycgKyBPW2tleV0gOiBUUEwuam9pbihTdHJpbmcoa2V5KSkpO1xuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2UgaWYgKCFzYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfSBlbHNlIGlmIChPW2tleV0pIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSB7XG4gICAgaGlkZShPLCBrZXksIHZhbCk7XG4gIH1cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJlZ0V4cCwgcmVwbGFjZSkge1xuICB2YXIgcmVwbGFjZXIgPSByZXBsYWNlID09PSBPYmplY3QocmVwbGFjZSkgPyBmdW5jdGlvbiAocGFydCkge1xuICAgIHJldHVybiByZXBsYWNlW3BhcnRdO1xuICB9IDogcmVwbGFjZTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBTdHJpbmcoaXQpLnJlcGxhY2UocmVnRXhwLCByZXBsYWNlcik7XG4gIH07XG59O1xuIiwiLy8gNy4yLjkgU2FtZVZhbHVlKHgsIHkpXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuIHggPT09IHkgPyB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSA6IHggIT0geCAmJiB5ICE9IHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBmcm9tOiBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcEZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcEZuID0gYXJndW1lbnRzWzFdO1xuICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjtcbiAgICBhRnVuY3Rpb24odGhpcyk7XG4gICAgbWFwcGluZyA9IG1hcEZuICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7XG4gICAgaWYgKHNvdXJjZSA9PSB1bmRlZmluZWQpIHJldHVybiBuZXcgdGhpcygpO1xuICAgIEEgPSBbXTtcbiAgICBpZiAobWFwcGluZykge1xuICAgICAgbiA9IDA7XG4gICAgICBjYiA9IGN0eChtYXBGbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkge1xuICAgICAgICBBLnB1c2goY2IobmV4dEl0ZW0sIG4rKykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIEEucHVzaCwgQSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgQSA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGgtLSkgQVtsZW5ndGhdID0gYXJndW1lbnRzW2xlbmd0aF07XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcbiIsIi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoTywgcHJvdG8pIHtcbiAgYW5PYmplY3QoTyk7XG4gIGlmICghaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKSB0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbiAodGVzdCwgYnVnZ3ksIHNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0ID0gcmVxdWlyZSgnLi9fY3R4JykoRnVuY3Rpb24uY2FsbCwgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQsIDIpO1xuICAgICAgICBzZXQodGVzdCwgW10pO1xuICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgYnVnZ3kgPSB0cnVlOyB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuICAgICAgICBpZiAoYnVnZ3kpIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIE87XG4gICAgICB9O1xuICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksXG4gIGNoZWNrOiBjaGVja1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcbiIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG59O1xuIiwiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsXG4gICAgYXJnID8gbWV0aG9kLmNhbGwobnVsbCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAxKSA6IG1ldGhvZC5jYWxsKG51bGwpO1xuICB9KTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwiLy8gaGVscGVyIGZvciBTdHJpbmcje3N0YXJ0c1dpdGgsIGVuZHNXaXRoLCBpbmNsdWRlc31cbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIHNlYXJjaFN0cmluZywgTkFNRSkge1xuICBpZiAoaXNSZWdFeHAoc2VhcmNoU3RyaW5nKSkgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmcjJyArIE5BTUUgKyBcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7XG4gIHJldHVybiBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG59O1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBxdW90ID0gL1wiL2c7XG4vLyBCLjIuMy4yLjEgQ3JlYXRlSFRNTChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSlcbnZhciBjcmVhdGVIVE1MID0gZnVuY3Rpb24gKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQoc3RyaW5nKSk7XG4gIHZhciBwMSA9ICc8JyArIHRhZztcbiAgaWYgKGF0dHJpYnV0ZSAhPT0gJycpIHAxICs9ICcgJyArIGF0dHJpYnV0ZSArICc9XCInICsgU3RyaW5nKHZhbHVlKS5yZXBsYWNlKHF1b3QsICcmcXVvdDsnKSArICdcIic7XG4gIHJldHVybiBwMSArICc+JyArIFMgKyAnPC8nICsgdGFnICsgJz4nO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIGV4ZWMpIHtcbiAgdmFyIE8gPSB7fTtcbiAgT1tOQU1FXSA9IGV4ZWMoY3JlYXRlSFRNTCk7XG4gICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ZXN0ID0gJydbTkFNRV0oJ1wiJyk7XG4gICAgcmV0dXJuIHRlc3QgIT09IHRlc3QudG9Mb3dlckNhc2UoKSB8fCB0ZXN0LnNwbGl0KCdcIicpLmxlbmd0aCA+IDM7XG4gIH0pLCAnU3RyaW5nJywgTyk7XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBtYXhMZW5ndGgsIGZpbGxTdHJpbmcsIGxlZnQpIHtcbiAgdmFyIFMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gIHZhciBzdHJpbmdMZW5ndGggPSBTLmxlbmd0aDtcbiAgdmFyIGZpbGxTdHIgPSBmaWxsU3RyaW5nID09PSB1bmRlZmluZWQgPyAnICcgOiBTdHJpbmcoZmlsbFN0cmluZyk7XG4gIHZhciBpbnRNYXhMZW5ndGggPSB0b0xlbmd0aChtYXhMZW5ndGgpO1xuICBpZiAoaW50TWF4TGVuZ3RoIDw9IHN0cmluZ0xlbmd0aCB8fCBmaWxsU3RyID09ICcnKSByZXR1cm4gUztcbiAgdmFyIGZpbGxMZW4gPSBpbnRNYXhMZW5ndGggLSBzdHJpbmdMZW5ndGg7XG4gIHZhciBzdHJpbmdGaWxsZXIgPSByZXBlYXQuY2FsbChmaWxsU3RyLCBNYXRoLmNlaWwoZmlsbExlbiAvIGZpbGxTdHIubGVuZ3RoKSk7XG4gIGlmIChzdHJpbmdGaWxsZXIubGVuZ3RoID4gZmlsbExlbikgc3RyaW5nRmlsbGVyID0gc3RyaW5nRmlsbGVyLnNsaWNlKDAsIGZpbGxMZW4pO1xuICByZXR1cm4gbGVmdCA/IHN0cmluZ0ZpbGxlciArIFMgOiBTICsgc3RyaW5nRmlsbGVyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyhkZWZpbmVkKHRoaXMpKTtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlcihjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKFwiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmVcIik7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXMgKz0gc3RyO1xuICByZXR1cm4gcmVzO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICdcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwMycgK1xuICAnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW5kZXhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgdmFyIG51bWJlciA9IHRvSW50ZWdlcihpdCk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChudW1iZXIpO1xuICBpZiAobnVtYmVyICE9PSBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCEnKTtcbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykpIHtcbiAgdmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG4gIHZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbiAgdmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbiAgdmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiAgdmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG4gIHZhciAkYnVmZmVyID0gcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJyk7XG4gIHZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbiAgdmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xuICB2YXIgcHJvcGVydHlEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xuICB2YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbiAgdmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG4gIHZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG4gIHZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuICB2YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG4gIHZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xuICB2YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbiAgdmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xuICB2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbiAgdmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4gIHZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xuICB2YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG4gIHZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG4gIHZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbiAgdmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG4gIHZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuICB2YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG4gIHZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbiAgdmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xuICB2YXIgY3JlYXRlQXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJyk7XG4gIHZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG4gIHZhciBBcnJheUl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG4gIHZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbiAgdmFyICRpdGVyRGV0ZWN0ID0gcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKTtcbiAgdmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpO1xuICB2YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xuICB2YXIgYXJyYXlDb3B5V2l0aGluID0gcmVxdWlyZSgnLi9fYXJyYXktY29weS13aXRoaW4nKTtcbiAgdmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuICB2YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xuICB2YXIgZFAgPSAkRFAuZjtcbiAgdmFyIGdPUEQgPSAkR09QRC5mO1xuICB2YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuICB2YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbiAgdmFyIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG4gIHZhciBTSEFSRURfQlVGRkVSID0gJ1NoYXJlZCcgKyBBUlJBWV9CVUZGRVI7XG4gIHZhciBCWVRFU19QRVJfRUxFTUVOVCA9ICdCWVRFU19QRVJfRUxFTUVOVCc7XG4gIHZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheVtQUk9UT1RZUEVdO1xuICB2YXIgJEFycmF5QnVmZmVyID0gJGJ1ZmZlci5BcnJheUJ1ZmZlcjtcbiAgdmFyICREYXRhVmlldyA9ICRidWZmZXIuRGF0YVZpZXc7XG4gIHZhciBhcnJheUZvckVhY2ggPSBjcmVhdGVBcnJheU1ldGhvZCgwKTtcbiAgdmFyIGFycmF5RmlsdGVyID0gY3JlYXRlQXJyYXlNZXRob2QoMik7XG4gIHZhciBhcnJheVNvbWUgPSBjcmVhdGVBcnJheU1ldGhvZCgzKTtcbiAgdmFyIGFycmF5RXZlcnkgPSBjcmVhdGVBcnJheU1ldGhvZCg0KTtcbiAgdmFyIGFycmF5RmluZCA9IGNyZWF0ZUFycmF5TWV0aG9kKDUpO1xuICB2YXIgYXJyYXlGaW5kSW5kZXggPSBjcmVhdGVBcnJheU1ldGhvZCg2KTtcbiAgdmFyIGFycmF5SW5jbHVkZXMgPSBjcmVhdGVBcnJheUluY2x1ZGVzKHRydWUpO1xuICB2YXIgYXJyYXlJbmRleE9mID0gY3JlYXRlQXJyYXlJbmNsdWRlcyhmYWxzZSk7XG4gIHZhciBhcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JzLnZhbHVlcztcbiAgdmFyIGFycmF5S2V5cyA9IEFycmF5SXRlcmF0b3JzLmtleXM7XG4gIHZhciBhcnJheUVudHJpZXMgPSBBcnJheUl0ZXJhdG9ycy5lbnRyaWVzO1xuICB2YXIgYXJyYXlMYXN0SW5kZXhPZiA9IEFycmF5UHJvdG8ubGFzdEluZGV4T2Y7XG4gIHZhciBhcnJheVJlZHVjZSA9IEFycmF5UHJvdG8ucmVkdWNlO1xuICB2YXIgYXJyYXlSZWR1Y2VSaWdodCA9IEFycmF5UHJvdG8ucmVkdWNlUmlnaHQ7XG4gIHZhciBhcnJheUpvaW4gPSBBcnJheVByb3RvLmpvaW47XG4gIHZhciBhcnJheVNvcnQgPSBBcnJheVByb3RvLnNvcnQ7XG4gIHZhciBhcnJheVNsaWNlID0gQXJyYXlQcm90by5zbGljZTtcbiAgdmFyIGFycmF5VG9TdHJpbmcgPSBBcnJheVByb3RvLnRvU3RyaW5nO1xuICB2YXIgYXJyYXlUb0xvY2FsZVN0cmluZyA9IEFycmF5UHJvdG8udG9Mb2NhbGVTdHJpbmc7XG4gIHZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbiAgdmFyIFRBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbiAgdmFyIFRZUEVEX0NPTlNUUlVDVE9SID0gdWlkKCd0eXBlZF9jb25zdHJ1Y3RvcicpO1xuICB2YXIgREVGX0NPTlNUUlVDVE9SID0gdWlkKCdkZWZfY29uc3RydWN0b3InKTtcbiAgdmFyIEFMTF9DT05TVFJVQ1RPUlMgPSAkdHlwZWQuQ09OU1RSO1xuICB2YXIgVFlQRURfQVJSQVkgPSAkdHlwZWQuVFlQRUQ7XG4gIHZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG4gIHZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoISc7XG5cbiAgdmFyICRtYXAgPSBjcmVhdGVBcnJheU1ldGhvZCgxLCBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGFsbG9jYXRlKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pLCBsZW5ndGgpO1xuICB9KTtcblxuICB2YXIgTElUVExFX0VORElBTiA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXSA9PT0gMTtcbiAgfSk7XG5cbiAgdmFyIEZPUkNFRF9TRVQgPSAhIVVpbnQ4QXJyYXkgJiYgISFVaW50OEFycmF5W1BST1RPVFlQRV0uc2V0ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgVWludDhBcnJheSgxKS5zZXQoe30pO1xuICB9KTtcblxuICB2YXIgdG9PZmZzZXQgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihpdCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9O1xuXG4gIHZhciB2YWxpZGF0ZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIGlmIChpc09iamVjdChpdCkgJiYgVFlQRURfQVJSQVkgaW4gaXQpIHJldHVybiBpdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIHR5cGVkIGFycmF5IScpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uIChDLCBsZW5ndGgpIHtcbiAgICBpZiAoIShpc09iamVjdChDKSAmJiBUWVBFRF9DT05TVFJVQ1RPUiBpbiBDKSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEnKTtcbiAgICB9IHJldHVybiBuZXcgQyhsZW5ndGgpO1xuICB9O1xuXG4gIHZhciBzcGVjaWVzRnJvbUxpc3QgPSBmdW5jdGlvbiAoTywgbGlzdCkge1xuICAgIHJldHVybiBmcm9tTGlzdChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGlzdCk7XG4gIH07XG5cbiAgdmFyIGZyb21MaXN0ID0gZnVuY3Rpb24gKEMsIGxpc3QpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gYWxsb2NhdGUoQywgbGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBsaXN0W2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChpdCwga2V5LCBpbnRlcm5hbCkge1xuICAgIGRQKGl0LCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kW2ludGVybmFsXTsgfSB9KTtcbiAgfTtcblxuICB2YXIgJGZyb20gPSBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcGZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChzb3VyY2UpO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgaSwgbGVuZ3RoLCB2YWx1ZXMsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIWlzQXJyYXlJdGVyKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgdmFsdWVzID0gW10sIGkgPSAwOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGkrKykge1xuICAgICAgICB2YWx1ZXMucHVzaChzdGVwLnZhbHVlKTtcbiAgICAgIH0gTyA9IHZhbHVlcztcbiAgICB9XG4gICAgaWYgKG1hcHBpbmcgJiYgYUxlbiA+IDIpIG1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKSwgcmVzdWx0ID0gYWxsb2NhdGUodGhpcywgbGVuZ3RoKTsgbGVuZ3RoID4gaTsgaSsrKSB7XG4gICAgICByZXN1bHRbaV0gPSBtYXBwaW5nID8gbWFwZm4oT1tpXSwgaSkgOiBPW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciAkb2YgPSBmdW5jdGlvbiBvZigvKiAuLi5pdGVtcyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gaU9TIFNhZmFyaSA2LnggZmFpbHMgaGVyZVxuICB2YXIgVE9fTE9DQUxFX0JVRyA9ICEhVWludDhBcnJheSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9Mb2NhbGVTdHJpbmcuY2FsbChuZXcgVWludDhBcnJheSgxKSk7IH0pO1xuXG4gIHZhciAkdG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgICByZXR1cm4gYXJyYXlUb0xvY2FsZVN0cmluZy5hcHBseShUT19MT0NBTEVfQlVHID8gYXJyYXlTbGljZS5jYWxsKHZhbGlkYXRlKHRoaXMpKSA6IHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHZhciBwcm90byA9IHtcbiAgICBjb3B5V2l0aGluOiBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCwgc3RhcnQgLyogLCBlbmQgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUNvcHlXaXRoaW4uY2FsbCh2YWxpZGF0ZSh0aGlzKSwgdGFyZ2V0LCBzdGFydCwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlFdmVyeSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZmlsbDogZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiAsIHN0YXJ0LCBlbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5RmlsbC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5RmlsdGVyKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLFxuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCkpO1xuICAgIH0sXG4gICAgZmluZDogZnVuY3Rpb24gZmluZChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kKHZhbGlkYXRlKHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUZpbmRJbmRleCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICBhcnJheUZvckVhY2godmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluZGV4T2Y6IGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICAgICAgcmV0dXJuIGFycmF5SW5kZXhPZih2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKHZhbGlkYXRlKHRoaXMpLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlKb2luLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5TGFzdEluZGV4T2YuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBtYXA6IGZ1bmN0aW9uIG1hcChtYXBmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiAkbWFwKHZhbGlkYXRlKHRoaXMpLCBtYXBmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2VSaWdodC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGUodGhhdCkubGVuZ3RoO1xuICAgICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IobGVuZ3RoIC8gMik7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHZhbHVlO1xuICAgICAgd2hpbGUgKGluZGV4IDwgbWlkZGxlKSB7XG4gICAgICAgIHZhbHVlID0gdGhhdFtpbmRleF07XG4gICAgICAgIHRoYXRbaW5kZXgrK10gPSB0aGF0Wy0tbGVuZ3RoXTtcbiAgICAgICAgdGhhdFtsZW5ndGhdID0gdmFsdWU7XG4gICAgICB9IHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5U29tZSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICAgIHJldHVybiBhcnJheVNvcnQuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgY29tcGFyZWZuKTtcbiAgICB9LFxuICAgIHN1YmFycmF5OiBmdW5jdGlvbiBzdWJhcnJheShiZWdpbiwgZW5kKSB7XG4gICAgICB2YXIgTyA9IHZhbGlkYXRlKHRoaXMpO1xuICAgICAgdmFyIGxlbmd0aCA9IE8ubGVuZ3RoO1xuICAgICAgdmFyICRiZWdpbiA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgICAgIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pKShcbiAgICAgICAgTy5idWZmZXIsXG4gICAgICAgIE8uYnl0ZU9mZnNldCArICRiZWdpbiAqIE8uQllURVNfUEVSX0VMRU1FTlQsXG4gICAgICAgIHRvTGVuZ3RoKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCkpIC0gJGJlZ2luKVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyICRzbGljZSA9IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgc3RhcnQsIGVuZCkpO1xuICB9O1xuXG4gIHZhciAkc2V0ID0gZnVuY3Rpb24gc2V0KGFycmF5TGlrZSAvKiAsIG9mZnNldCAqLykge1xuICAgIHZhbGlkYXRlKHRoaXMpO1xuICAgIHZhciBvZmZzZXQgPSB0b09mZnNldChhcmd1bWVudHNbMV0sIDEpO1xuICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICB2YXIgc3JjID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgoc3JjLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpZiAobGVuICsgb2Zmc2V0ID4gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuKSB0aGlzW29mZnNldCArIGluZGV4XSA9IHNyY1tpbmRleCsrXTtcbiAgfTtcblxuICB2YXIgJGl0ZXJhdG9ycyA9IHtcbiAgICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5RW50cmllcy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIGtleXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlLZXlzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH0sXG4gICAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlWYWx1ZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc1RBSW5kZXggPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGFyZ2V0KVxuICAgICAgJiYgdGFyZ2V0W1RZUEVEX0FSUkFZXVxuICAgICAgJiYgdHlwZW9mIGtleSAhPSAnc3ltYm9sJ1xuICAgICAgJiYga2V5IGluIHRhcmdldFxuICAgICAgJiYgU3RyaW5nKCtrZXkpID09IFN0cmluZyhrZXkpO1xuICB9O1xuICB2YXIgJGdldERlc2MgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgID8gcHJvcGVydHlEZXNjKDIsIHRhcmdldFtrZXldKVxuICAgICAgOiBnT1BEKHRhcmdldCwga2V5KTtcbiAgfTtcbiAgdmFyICRzZXREZXNjID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICBpZiAoaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgICYmIGlzT2JqZWN0KGRlc2MpXG4gICAgICAmJiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICAgICYmICFoYXMoZGVzYywgJ2dldCcpXG4gICAgICAmJiAhaGFzKGRlc2MsICdzZXQnKVxuICAgICAgLy8gVE9ETzogYWRkIHZhbGlkYXRpb24gZGVzY3JpcHRvciB3L28gY2FsbGluZyBhY2Nlc3NvcnNcbiAgICAgICYmICFkZXNjLmNvbmZpZ3VyYWJsZVxuICAgICAgJiYgKCFoYXMoZGVzYywgJ3dyaXRhYmxlJykgfHwgZGVzYy53cml0YWJsZSlcbiAgICAgICYmICghaGFzKGRlc2MsICdlbnVtZXJhYmxlJykgfHwgZGVzYy5lbnVtZXJhYmxlKVxuICAgICkge1xuICAgICAgdGFyZ2V0W2tleV0gPSBkZXNjLnZhbHVlO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9IHJldHVybiBkUCh0YXJnZXQsIGtleSwgZGVzYyk7XG4gIH07XG5cbiAgaWYgKCFBTExfQ09OU1RSVUNUT1JTKSB7XG4gICAgJEdPUEQuZiA9ICRnZXREZXNjO1xuICAgICREUC5mID0gJHNldERlc2M7XG4gIH1cblxuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFBTExfQ09OU1RSVUNUT1JTLCAnT2JqZWN0Jywge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldERlc2MsXG4gICAgZGVmaW5lUHJvcGVydHk6ICRzZXREZXNjXG4gIH0pO1xuXG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9TdHJpbmcuY2FsbCh7fSk7IH0pKSB7XG4gICAgYXJyYXlUb1N0cmluZyA9IGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBhcnJheUpvaW4uY2FsbCh0aGlzKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyICRUeXBlZEFycmF5UHJvdG90eXBlJCA9IHJlZGVmaW5lQWxsKHt9LCBwcm90byk7XG4gIHJlZGVmaW5lQWxsKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJGl0ZXJhdG9ycyk7XG4gIGhpZGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBJVEVSQVRPUiwgJGl0ZXJhdG9ycy52YWx1ZXMpO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsIHtcbiAgICBzbGljZTogJHNsaWNlLFxuICAgIHNldDogJHNldCxcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeyAvKiBub29wICovIH0sXG4gICAgdG9TdHJpbmc6IGFycmF5VG9TdHJpbmcsXG4gICAgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZ1xuICB9KTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J1ZmZlcicsICdiJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlT2Zmc2V0JywgJ28nKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J5dGVMZW5ndGgnLCAnbCcpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnbGVuZ3RoJywgJ2UnKTtcbiAgZFAoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBUQUcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbVFlQRURfQVJSQVldOyB9XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50c1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIEJZVEVTLCB3cmFwcGVyLCBDTEFNUEVEKSB7XG4gICAgQ0xBTVBFRCA9ICEhQ0xBTVBFRDtcbiAgICB2YXIgTkFNRSA9IEtFWSArIChDTEFNUEVEID8gJ0NsYW1wZWQnIDogJycpICsgJ0FycmF5JztcbiAgICB2YXIgR0VUVEVSID0gJ2dldCcgKyBLRVk7XG4gICAgdmFyIFNFVFRFUiA9ICdzZXQnICsgS0VZO1xuICAgIHZhciBUeXBlZEFycmF5ID0gZ2xvYmFsW05BTUVdO1xuICAgIHZhciBCYXNlID0gVHlwZWRBcnJheSB8fCB7fTtcbiAgICB2YXIgVEFDID0gVHlwZWRBcnJheSAmJiBnZXRQcm90b3R5cGVPZihUeXBlZEFycmF5KTtcbiAgICB2YXIgRk9SQ0VEID0gIVR5cGVkQXJyYXkgfHwgISR0eXBlZC5BQlY7XG4gICAgdmFyIE8gPSB7fTtcbiAgICB2YXIgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXkgJiYgVHlwZWRBcnJheVtQUk9UT1RZUEVdO1xuICAgIHZhciBnZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIHZhciBkYXRhID0gdGhhdC5fZDtcbiAgICAgIHJldHVybiBkYXRhLnZbR0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCBMSVRUTEVfRU5ESUFOKTtcbiAgICB9O1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICBpZiAoQ0xBTVBFRCkgdmFsdWUgPSAodmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlKSkgPCAwID8gMCA6IHZhbHVlID4gMHhmZiA/IDB4ZmYgOiB2YWx1ZSAmIDB4ZmY7XG4gICAgICBkYXRhLnZbU0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCB2YWx1ZSwgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgYWRkRWxlbWVudCA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgZFAodGhhdCwgaW5kZXgsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlcih0aGlzLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSwgJ19kJyk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgICB2YXIgYnVmZmVyLCBieXRlTGVuZ3RoLCBsZW5ndGgsIGtsYXNzO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgbGVuZ3RoID0gdG9JbmRleChkYXRhKTtcbiAgICAgICAgICBieXRlTGVuZ3RoID0gbGVuZ3RoICogQllURVM7XG4gICAgICAgICAgYnVmZmVyID0gbmV3ICRBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgJEFycmF5QnVmZmVyIHx8IChrbGFzcyA9IGNsYXNzb2YoZGF0YSkpID09IEFSUkFZX0JVRkZFUiB8fCBrbGFzcyA9PSBTSEFSRURfQlVGRkVSKSB7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBvZmZzZXQgPSB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYgKCRsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCRsZW4gJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9ICRsZW4gLSBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCA8IDApIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCArIG9mZnNldCA+ICRsZW4pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIEJZVEVTO1xuICAgICAgICB9IGVsc2UgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaGlkZSh0aGF0LCAnX2QnLCB7XG4gICAgICAgICAgYjogYnVmZmVyLFxuICAgICAgICAgIG86IG9mZnNldCxcbiAgICAgICAgICBsOiBieXRlTGVuZ3RoLFxuICAgICAgICAgIGU6IGxlbmd0aCxcbiAgICAgICAgICB2OiBuZXcgJERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IGNyZWF0ZSgkVHlwZWRBcnJheVByb3RvdHlwZSQpO1xuICAgICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBUeXBlZEFycmF5KTtcbiAgICB9IGVsc2UgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5KDEpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgtMSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSkgfHwgISRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkobnVsbCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheSgxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoaXRlcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSwgdHJ1ZSkpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSk7XG4gICAgICAgIHZhciBrbGFzcztcbiAgICAgICAgLy8gYHdzYCBtb2R1bGUgYnVnLCB0ZW1wb3JhcmlseSByZW1vdmUgdmFsaWRhdGlvbiBsZW5ndGggZm9yIFVpbnQ4QXJyYXlcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC82NDVcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkgcmV0dXJuIG5ldyBCYXNlKHRvSW5kZXgoZGF0YSkpO1xuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIHJldHVybiAkbGVuZ3RoICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpLCAkbGVuZ3RoKVxuICAgICAgICAgICAgOiAkb2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBuZXcgQmFzZShkYXRhLCB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IEJhc2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIGFycmF5Rm9yRWFjaChUQUMgIT09IEZ1bmN0aW9uLnByb3RvdHlwZSA/IGdPUE4oQmFzZSkuY29uY2F0KGdPUE4oVEFDKSkgOiBnT1BOKEJhc2UpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiBUeXBlZEFycmF5KSkgaGlkZShUeXBlZEFycmF5LCBrZXksIEJhc2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IFR5cGVkQXJyYXlQcm90b3R5cGU7XG4gICAgICBpZiAoIUxJQlJBUlkpIFR5cGVkQXJyYXlQcm90b3R5cGUuY29uc3RydWN0b3IgPSBUeXBlZEFycmF5O1xuICAgIH1cbiAgICB2YXIgJG5hdGl2ZUl0ZXJhdG9yID0gVHlwZWRBcnJheVByb3RvdHlwZVtJVEVSQVRPUl07XG4gICAgdmFyIENPUlJFQ1RfSVRFUl9OQU1FID0gISEkbmF0aXZlSXRlcmF0b3JcbiAgICAgICYmICgkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSAndmFsdWVzJyB8fCAkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSB1bmRlZmluZWQpO1xuICAgIHZhciAkaXRlcmF0b3IgPSAkaXRlcmF0b3JzLnZhbHVlcztcbiAgICBoaWRlKFR5cGVkQXJyYXksIFRZUEVEX0NPTlNUUlVDVE9SLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRZUEVEX0FSUkFZLCBOQU1FKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgREVGX0NPTlNUUlVDVE9SLCBUeXBlZEFycmF5KTtcblxuICAgIGlmIChDTEFNUEVEID8gbmV3IFR5cGVkQXJyYXkoMSlbVEFHXSAhPSBOQU1FIDogIShUQUcgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIHtcbiAgICAgIGRQKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRBRywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5BTUU7IH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9bTkFNRV0gPSBUeXBlZEFycmF5O1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoVHlwZWRBcnJheSAhPSBCYXNlKSwgTyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUywgTkFNRSwge1xuICAgICAgQllURVNfUEVSX0VMRU1FTlQ6IEJZVEVTXG4gICAgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgQmFzZS5vZi5jYWxsKFR5cGVkQXJyYXksIDEpOyB9KSwgTkFNRSwge1xuICAgICAgZnJvbTogJGZyb20sXG4gICAgICBvZjogJG9mXG4gICAgfSk7XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5UHJvdG90eXBlKSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAsIE5BTUUsIHByb3RvKTtcblxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIEZPUkNFRF9TRVQsIE5BTUUsIHsgc2V0OiAkc2V0IH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhQ09SUkVDVF9JVEVSX05BTUUsIE5BTUUsICRpdGVyYXRvcnMpO1xuXG4gICAgaWYgKCFMSUJSQVJZICYmIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgIT0gYXJyYXlUb1N0cmluZykgVHlwZWRBcnJheVByb3RvdHlwZS50b1N0cmluZyA9IGFycmF5VG9TdHJpbmc7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBUeXBlZEFycmF5KDEpLnNsaWNlKCk7XG4gICAgfSksIE5BTUUsIHsgc2xpY2U6ICRzbGljZSB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbMSwgMl0udG9Mb2NhbGVTdHJpbmcoKSAhPSBuZXcgVHlwZWRBcnJheShbMSwgMl0pLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwgMl0pO1xuICAgIH0pKSwgTkFNRSwgeyB0b0xvY2FsZVN0cmluZzogJHRvTG9jYWxlU3RyaW5nIH0pO1xuXG4gICAgSXRlcmF0b3JzW05BTUVdID0gQ09SUkVDVF9JVEVSX05BTUUgPyAkbmF0aXZlSXRlcmF0b3IgOiAkaXRlcmF0b3I7XG4gICAgaWYgKCFMSUJSQVJZICYmICFDT1JSRUNUX0lURVJfTkFNRSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBJVEVSQVRPUiwgJGl0ZXJhdG9yKTtcbiAgfTtcbn0gZWxzZSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIERBVEFfVklFVyA9ICdEYXRhVmlldyc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xudmFyIFdST05HX0lOREVYID0gJ1dyb25nIGluZGV4ISc7XG52YXIgJEFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG52YXIgJERhdGFWaWV3ID0gZ2xvYmFsW0RBVEFfVklFV107XG52YXIgTWF0aCA9IGdsb2JhbC5NYXRoO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3ctcmVzdHJpY3RlZC1uYW1lc1xudmFyIEluZmluaXR5ID0gZ2xvYmFsLkluZmluaXR5O1xudmFyIEJhc2VCdWZmZXIgPSAkQXJyYXlCdWZmZXI7XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExOMiA9IE1hdGguTE4yO1xudmFyIEJVRkZFUiA9ICdidWZmZXInO1xudmFyIEJZVEVfTEVOR1RIID0gJ2J5dGVMZW5ndGgnO1xudmFyIEJZVEVfT0ZGU0VUID0gJ2J5dGVPZmZzZXQnO1xudmFyICRCVUZGRVIgPSBERVNDUklQVE9SUyA/ICdfYicgOiBCVUZGRVI7XG52YXIgJExFTkdUSCA9IERFU0NSSVBUT1JTID8gJ19sJyA6IEJZVEVfTEVOR1RIO1xudmFyICRPRkZTRVQgPSBERVNDUklQVE9SUyA/ICdfbycgOiBCWVRFX09GRlNFVDtcblxuLy8gSUVFRTc1NCBjb252ZXJzaW9ucyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2llZWU3NTRcbmZ1bmN0aW9uIHBhY2tJRUVFNzU0KHZhbHVlLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShuQnl0ZXMpO1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIHJ0ID0gbUxlbiA9PT0gMjMgPyBwb3coMiwgLTI0KSAtIHBvdygyLCAtNzcpIDogMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCB2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwID8gMSA6IDA7XG4gIHZhciBlLCBtLCBjO1xuICB2YWx1ZSA9IGFicyh2YWx1ZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHZhbHVlICE9IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBtID0gdmFsdWUgIT0gdmFsdWUgPyAxIDogMDtcbiAgICBlID0gZU1heDtcbiAgfSBlbHNlIHtcbiAgICBlID0gZmxvb3IobG9nKHZhbHVlKSAvIExOMik7XG4gICAgaWYgKHZhbHVlICogKGMgPSBwb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLTtcbiAgICAgIGMgKj0gMjtcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrO1xuICAgICAgYyAvPSAyO1xuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwO1xuICAgICAgZSA9IGVNYXg7XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSBlICsgZUJpYXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIHBvdygyLCBlQmlhcyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IDA7XG4gICAgfVxuICB9XG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltpKytdID0gbSAmIDI1NSwgbSAvPSAyNTYsIG1MZW4gLT0gOCk7XG4gIGUgPSBlIDw8IG1MZW4gfCBtO1xuICBlTGVuICs9IG1MZW47XG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW2krK10gPSBlICYgMjU1LCBlIC89IDI1NiwgZUxlbiAtPSA4KTtcbiAgYnVmZmVyWy0taV0gfD0gcyAqIDEyODtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbmZ1bmN0aW9uIHVucGFja0lFRUU3NTQoYnVmZmVyLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBuQml0cyA9IGVMZW4gLSA3O1xuICB2YXIgaSA9IG5CeXRlcyAtIDE7XG4gIHZhciBzID0gYnVmZmVyW2ktLV07XG4gIHZhciBlID0gcyAmIDEyNztcbiAgdmFyIG07XG4gIHMgPj49IDc7XG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBtID0gZSAmICgxIDw8IC1uQml0cykgLSAxO1xuICBlID4+PSAtbkJpdHM7XG4gIG5CaXRzICs9IG1MZW47XG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogcyA/IC1JbmZpbml0eSA6IEluZmluaXR5O1xuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgcG93KDIsIG1MZW4pO1xuICAgIGUgPSBlIC0gZUJpYXM7XG4gIH0gcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBwb3coMiwgZSAtIG1MZW4pO1xufVxuXG5mdW5jdGlvbiB1bnBhY2tJMzIoYnl0ZXMpIHtcbiAgcmV0dXJuIGJ5dGVzWzNdIDw8IDI0IHwgYnl0ZXNbMl0gPDwgMTYgfCBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG59XG5mdW5jdGlvbiBwYWNrSTgoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kxNihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kzMihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmYsIGl0ID4+IDE2ICYgMHhmZiwgaXQgPj4gMjQgJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tGNjQoaXQpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCA1MiwgOCk7XG59XG5mdW5jdGlvbiBwYWNrRjMyKGl0KSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChpdCwgMjMsIDQpO1xufVxuXG5mdW5jdGlvbiBhZGRHZXR0ZXIoQywga2V5LCBpbnRlcm5hbCkge1xuICBkUChDW1BST1RPVFlQRV0sIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbaW50ZXJuYWxdOyB9IH0pO1xufVxuXG5mdW5jdGlvbiBnZXQodmlldywgYnl0ZXMsIGluZGV4LCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgbnVtSW5kZXggPSAraW5kZXg7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgobnVtSW5kZXgpO1xuICBpZiAoaW50SW5kZXggKyBieXRlcyA+IHZpZXdbJExFTkdUSF0pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgc3RvcmUgPSB2aWV3WyRCVUZGRVJdLl9iO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF07XG4gIHZhciBwYWNrID0gc3RvcmUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgYnl0ZXMpO1xuICByZXR1cm4gaXNMaXR0bGVFbmRpYW4gPyBwYWNrIDogcGFjay5yZXZlcnNlKCk7XG59XG5mdW5jdGlvbiBzZXQodmlldywgYnl0ZXMsIGluZGV4LCBjb252ZXJzaW9uLCB2YWx1ZSwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4O1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KG51bUluZGV4KTtcbiAgaWYgKGludEluZGV4ICsgYnl0ZXMgPiB2aWV3WyRMRU5HVEhdKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYjtcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyB2aWV3WyRPRkZTRVRdO1xuICB2YXIgcGFjayA9IGNvbnZlcnNpb24oK3ZhbHVlKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlczsgaSsrKSBzdG9yZVtzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBieXRlcyAtIGkgLSAxXTtcbn1cblxuaWYgKCEkdHlwZWQuQUJWKSB7XG4gICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuICAgIHZhciBieXRlTGVuZ3RoID0gdG9JbmRleChsZW5ndGgpO1xuICAgIHRoaXMuX2IgPSBhcnJheUZpbGwuY2FsbChuZXcgQXJyYXkoYnl0ZUxlbmd0aCksIDApO1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gICREYXRhVmlldyA9IGZ1bmN0aW9uIERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuICAgIGFuSW5zdGFuY2UoYnVmZmVyLCAkQXJyYXlCdWZmZXIsIERBVEFfVklFVyk7XG4gICAgdmFyIGJ1ZmZlckxlbmd0aCA9IGJ1ZmZlclskTEVOR1RIXTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9JbnRlZ2VyKGJ5dGVPZmZzZXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0IScpO1xuICAgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgPyBidWZmZXJMZW5ndGggLSBvZmZzZXQgOiB0b0xlbmd0aChieXRlTGVuZ3RoKTtcbiAgICBpZiAob2Zmc2V0ICsgYnl0ZUxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHRoaXNbJEJVRkZFUl0gPSBidWZmZXI7XG4gICAgdGhpc1skT0ZGU0VUXSA9IG9mZnNldDtcbiAgICB0aGlzWyRMRU5HVEhdID0gYnl0ZUxlbmd0aDtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICBhZGRHZXR0ZXIoJEFycmF5QnVmZmVyLCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQlVGRkVSLCAnX2InKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9PRkZTRVQsICdfbycpO1xuICB9XG5cbiAgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBnZXRJbnQ4OiBmdW5jdGlvbiBnZXRJbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF0gPDwgMjQgPj4gMjQ7XG4gICAgfSxcbiAgICBnZXRVaW50ODogZnVuY3Rpb24gZ2V0VWludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXTtcbiAgICB9LFxuICAgIGdldEludDE2OiBmdW5jdGlvbiBnZXRJbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKTtcbiAgICAgIHJldHVybiAoYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdKSA8PCAxNiA+PiAxNjtcbiAgICB9LFxuICAgIGdldFVpbnQxNjogZnVuY3Rpb24gZ2V0VWludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbiAgICB9LFxuICAgIGdldEludDMyOiBmdW5jdGlvbiBnZXRJbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSTMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pKTtcbiAgICB9LFxuICAgIGdldFVpbnQzMjogZnVuY3Rpb24gZ2V0VWludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJMzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSkpID4+PiAwO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQzMjogZnVuY3Rpb24gZ2V0RmxvYXQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgMjMsIDQpO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NDogZnVuY3Rpb24gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgNTIsIDgpO1xuICAgIH0sXG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0k4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRJbnQxNjogZnVuY3Rpb24gc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQxNjogZnVuY3Rpb24gc2V0VWludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0kxNiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRJbnQzMjogZnVuY3Rpb24gc2V0SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSTMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQzMjogZnVuY3Rpb24gc2V0VWludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDMyOiBmdW5jdGlvbiBzZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0YzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDY0OiBmdW5jdGlvbiBzZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgcGFja0Y2NCwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICRBcnJheUJ1ZmZlcigxKTtcbiAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgJEFycmF5QnVmZmVyKC0xKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgfSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBuZXcgJEFycmF5QnVmZmVyKDEuNSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbmV3ICRBcnJheUJ1ZmZlcihOYU4pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIHJldHVybiAkQXJyYXlCdWZmZXIubmFtZSAhPSBBUlJBWV9CVUZGRVI7XG4gIH0pKSB7XG4gICAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlcik7XG4gICAgICByZXR1cm4gbmV3IEJhc2VCdWZmZXIodG9JbmRleChsZW5ndGgpKTtcbiAgICB9O1xuICAgIHZhciBBcnJheUJ1ZmZlclByb3RvID0gJEFycmF5QnVmZmVyW1BST1RPVFlQRV0gPSBCYXNlQnVmZmVyW1BST1RPVFlQRV07XG4gICAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZUJ1ZmZlciksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajspIHtcbiAgICAgIGlmICghKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpIGhpZGUoJEFycmF5QnVmZmVyLCBrZXksIEJhc2VCdWZmZXJba2V5XSk7XG4gICAgfVxuICAgIGlmICghTElCUkFSWSkgQXJyYXlCdWZmZXJQcm90by5jb25zdHJ1Y3RvciA9ICRBcnJheUJ1ZmZlcjtcbiAgfVxuICAvLyBpT1MgU2FmYXJpIDcueCBidWdcbiAgdmFyIHZpZXcgPSBuZXcgJERhdGFWaWV3KG5ldyAkQXJyYXlCdWZmZXIoMikpO1xuICB2YXIgJHNldEludDggPSAkRGF0YVZpZXdbUFJPVE9UWVBFXS5zZXRJbnQ4O1xuICB2aWV3LnNldEludDgoMCwgMjE0NzQ4MzY0OCk7XG4gIHZpZXcuc2V0SW50OCgxLCAyMTQ3NDgzNjQ5KTtcbiAgaWYgKHZpZXcuZ2V0SW50OCgwKSB8fCAhdmlldy5nZXRJbnQ4KDEpKSByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9XG4gIH0sIHRydWUpO1xufVxuc2V0VG9TdHJpbmdUYWcoJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuc2V0VG9TdHJpbmdUYWcoJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuaGlkZSgkRGF0YVZpZXdbUFJPVE9UWVBFXSwgJHR5cGVkLlZJRVcsIHRydWUpO1xuZXhwb3J0c1tBUlJBWV9CVUZGRVJdID0gJEFycmF5QnVmZmVyO1xuZXhwb3J0c1tEQVRBX1ZJRVddID0gJERhdGFWaWV3O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgVFlQRUQgPSB1aWQoJ3R5cGVkX2FycmF5Jyk7XG52YXIgVklFVyA9IHVpZCgndmlldycpO1xudmFyIEFCViA9ICEhKGdsb2JhbC5BcnJheUJ1ZmZlciAmJiBnbG9iYWwuRGF0YVZpZXcpO1xudmFyIENPTlNUUiA9IEFCVjtcbnZhciBpID0gMDtcbnZhciBsID0gOTtcbnZhciBUeXBlZDtcblxudmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMgPSAoXG4gICdJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheSdcbikuc3BsaXQoJywnKTtcblxud2hpbGUgKGkgPCBsKSB7XG4gIGlmIChUeXBlZCA9IGdsb2JhbFtUeXBlZEFycmF5Q29uc3RydWN0b3JzW2krK11dKSB7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFRZUEVELCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkLnByb3RvdHlwZSwgVklFVywgdHJ1ZSk7XG4gIH0gZWxzZSBDT05TVFIgPSBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFCVjogQUJWLFxuICBDT05TVFI6IENPTlNUUixcbiAgVFlQRUQ6IFRZUEVELFxuICBWSUVXOiBWSUVXXG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgfHwgaXQuX3QgIT09IFRZUEUpIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG4iLCJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWluZ3IvUmV4RXhwLmVzY2FwZVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmUgPSByZXF1aXJlKCcuL19yZXBsYWNlcicpKC9bXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZ0V4cCcsIHsgZXNjYXBlOiBmdW5jdGlvbiBlc2NhcGUoaXQpIHsgcmV0dXJuICRyZShpdCk7IH0gfSk7XG4iLCIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGNvcHlXaXRoaW46IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJykgfSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdjb3B5V2l0aGluJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg0KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmV2ZXJ5LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNSAvIDE1LjQuNC4xNiBBcnJheS5wcm90b3R5cGUuZXZlcnkoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHsgZmlsbDogcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmlsbCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZmlsdGVyLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNyAvIDE1LjQuNC4yMCBBcnJheS5wcm90b3R5cGUuZmlsdGVyKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXIodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuOSBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4KHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNik7XG52YXIgS0VZID0gJ2ZpbmRJbmRleCc7XG52YXIgZm9yY2VkID0gdHJ1ZTtcbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoS0VZIGluIFtdKSBBcnJheSgxKVtLRVldKGZ1bmN0aW9uICgpIHsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZEluZGV4OiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuOCBBcnJheS5wcm90b3R5cGUuZmluZChwcmVkaWNhdGUsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDUpO1xudmFyIEtFWSA9ICdmaW5kJztcbnZhciBmb3JjZWQgPSB0cnVlO1xuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChLRVkgaW4gW10pIEFycmF5KDEpW0tFWV0oZnVuY3Rpb24gKCkgeyBmb3JjZWQgPSBmYWxzZTsgfSk7XG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZvcmNlZCwgJ0FycmF5Jywge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKShLRVkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBTVFJJQ1QgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgJG5hdGl2ZSA9IFtdLmluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhJG5hdGl2ZSAmJiAxIC8gWzFdLmluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTEgLyAxNS40LjQuMTQgQXJyYXkucHJvdG90eXBlLmluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuIE5FR0FUSVZFX1pFUk9cbiAgICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICAgID8gJG5hdGl2ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDBcbiAgICAgIDogJGluZGV4T2YodGhpcywgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIvLyAyMi4xLjIuMiAvIDE1LjQuMy4yIEFycmF5LmlzQXJyYXkoYXJnKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdBcnJheScsIHsgaXNBcnJheTogcmVxdWlyZSgnLi9faXMtYXJyYXknKSB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmpvaW4oc2VwYXJhdG9yKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlKb2luID0gW10uam9pbjtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIHN0cmluZ3NcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKHJlcXVpcmUoJy4vX2lvYmplY3QnKSAhPSBPYmplY3QgfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShhcnJheUpvaW4pKSwgJ0FycmF5Jywge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikge1xuICAgIHJldHVybiBhcnJheUpvaW4uY2FsbCh0b0lPYmplY3QodGhpcyksIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywnIDogc2VwYXJhdG9yKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciAkbmF0aXZlID0gW10ubGFzdEluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhJG5hdGl2ZSAmJiAxIC8gWzFdLmxhc3RJbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE0IC8gMTUuNC40LjE1IEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IFssIGZyb21JbmRleF0pXG4gIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gQFsqLTFdICovKSB7XG4gICAgLy8gY29udmVydCAtMCB0byArMFxuICAgIGlmIChORUdBVElWRV9aRVJPKSByZXR1cm4gJG5hdGl2ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDA7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QodGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSBsZW5ndGggLSAxO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgaW5kZXggPSBNYXRoLm1pbihpbmRleCwgdG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSkpO1xuICAgIGlmIChpbmRleCA8IDApIGluZGV4ID0gbGVuZ3RoICsgaW5kZXg7XG4gICAgZm9yICg7aW5kZXggPj0gMDsgaW5kZXgtLSkgaWYgKGluZGV4IGluIE8pIGlmIChPW2luZGV4XSA9PT0gc2VhcmNoRWxlbWVudCkgcmV0dXJuIGluZGV4IHx8IDA7XG4gICAgcmV0dXJuIC0xO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgxKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLm1hcCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE1IC8gMTUuNC40LjE5IEFycmF5LnByb3RvdHlwZS5tYXAoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgbWFwOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuLy8gV2ViS2l0IEFycmF5Lm9mIGlzbid0IGdlbmVyaWNcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuICEoQXJyYXkub2YuY2FsbChGKSBpbnN0YW5jZW9mIEYpO1xufSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjMgQXJyYXkub2YoIC4uLml0ZW1zKVxuICBvZjogZnVuY3Rpb24gb2YoLyogLi4uYXJncyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBuZXcgKHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXkpKGFMZW4pO1xuICAgIHdoaWxlIChhTGVuID4gaW5kZXgpIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGFMZW47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheS1yZWR1Y2UnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnJlZHVjZVJpZ2h0LCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTkgLyAxNS40LjQuMjIgQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gWywgaW5pdGlhbFZhbHVlXSlcbiAgcmVkdWNlUmlnaHQ6IGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHNbMV0sIHRydWUpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5LXJlZHVjZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ucmVkdWNlLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTggLyAxNS40LjQuMjEgQXJyYXkucHJvdG90eXBlLnJlZHVjZShjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHNbMV0sIGZhbHNlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U2xpY2UgPSBbXS5zbGljZTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgaWYgKGh0bWwpIGFycmF5U2xpY2UuY2FsbChodG1sKTtcbn0pLCAnQXJyYXknLCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShiZWdpbiwgZW5kKSB7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoaXMubGVuZ3RoKTtcbiAgICB2YXIga2xhc3MgPSBjb2YodGhpcyk7XG4gICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiBlbmQ7XG4gICAgaWYgKGtsYXNzID09ICdBcnJheScpIHJldHVybiBhcnJheVNsaWNlLmNhbGwodGhpcywgYmVnaW4sIGVuZCk7XG4gICAgdmFyIHN0YXJ0ID0gdG9BYnNvbHV0ZUluZGV4KGJlZ2luLCBsZW4pO1xuICAgIHZhciB1cFRvID0gdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuKTtcbiAgICB2YXIgc2l6ZSA9IHRvTGVuZ3RoKHVwVG8gLSBzdGFydCk7XG4gICAgdmFyIGNsb25lZCA9IG5ldyBBcnJheShzaXplKTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPCBzaXplOyBpKyspIGNsb25lZFtpXSA9IGtsYXNzID09ICdTdHJpbmcnXG4gICAgICA/IHRoaXMuY2hhckF0KHN0YXJ0ICsgaSlcbiAgICAgIDogdGhpc1tzdGFydCArIGldO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkc29tZSA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgzKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnNvbWUsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4yMyAvIDE1LjQuNC4xNyBBcnJheS5wcm90b3R5cGUuc29tZShjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBzb21lOiBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRzb21lKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJHNvcnQgPSBbXS5zb3J0O1xudmFyIHRlc3QgPSBbMSwgMiwgM107XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gSUU4LVxuICB0ZXN0LnNvcnQodW5kZWZpbmVkKTtcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IGJ1Z1xuICB0ZXN0LnNvcnQobnVsbCk7XG4gIC8vIE9sZCBXZWJLaXRcbn0pIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJHNvcnQpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjUgQXJyYXkucHJvdG90eXBlLnNvcnQoY29tcGFyZWZuKVxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgIHJldHVybiBjb21wYXJlZm4gPT09IHVuZGVmaW5lZFxuICAgICAgPyAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpKVxuICAgICAgOiAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpLCBhRnVuY3Rpb24oY29tcGFyZWZuKSk7XG4gIH1cbn0pO1xuIiwicmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKSgnQXJyYXknKTtcbiIsIi8vIDIwLjMuMy4xIC8gMTUuOS40LjQgRGF0ZS5ub3coKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdEYXRlJywgeyBub3c6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpOyB9IH0pO1xuIiwiLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JU09TdHJpbmcgPSByZXF1aXJlKCcuL19kYXRlLXRvLWlzby1zdHJpbmcnKTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyAhPT0gdG9JU09TdHJpbmcpLCAnRGF0ZScsIHtcbiAgdG9JU09TdHJpbmc6IHRvSVNPU3RyaW5nXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IERhdGUoTmFOKS50b0pTT04oKSAhPT0gbnVsbFxuICAgIHx8IERhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHsgdG9JU09TdHJpbmc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDE7IH0gfSkgIT09IDE7XG59KSwgJ0RhdGUnLCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTihrZXkpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBwdiA9IHRvUHJpbWl0aXZlKE8pO1xuICAgIHJldHVybiB0eXBlb2YgcHYgPT0gJ251bWJlcicgJiYgIWlzRmluaXRlKHB2KSA/IG51bGwgOiBPLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn0pO1xuIiwidmFyIFRPX1BSSU1JVElWRSA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1ByaW1pdGl2ZScpO1xudmFyIHByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG5cbmlmICghKFRPX1BSSU1JVElWRSBpbiBwcm90bykpIHJlcXVpcmUoJy4vX2hpZGUnKShwcm90bywgVE9fUFJJTUlUSVZFLCByZXF1aXJlKCcuL19kYXRlLXRvLXByaW1pdGl2ZScpKTtcbiIsInZhciBEYXRlUHJvdG8gPSBEYXRlLnByb3RvdHlwZTtcbnZhciBJTlZBTElEX0RBVEUgPSAnSW52YWxpZCBEYXRlJztcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IERhdGVQcm90b1tUT19TVFJJTkddO1xudmFyIGdldFRpbWUgPSBEYXRlUHJvdG8uZ2V0VGltZTtcbmlmIChuZXcgRGF0ZShOYU4pICsgJycgIT0gSU5WQUxJRF9EQVRFKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoRGF0ZVByb3RvLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciB2YWx1ZSA9IGdldFRpbWUuY2FsbCh0aGlzKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/ICR0b1N0cmluZy5jYWxsKHRoaXMpIDogSU5WQUxJRF9EQVRFO1xuICB9KTtcbn1cbiIsIi8vIDE5LjIuMy4yIC8gMTUuMy40LjUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQodGhpc0FyZywgYXJncy4uLilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnRnVuY3Rpb24nLCB7IGJpbmQ6IHJlcXVpcmUoJy4vX2JpbmQnKSB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIEhBU19JTlNUQU5DRSA9IHJlcXVpcmUoJy4vX3drcycpKCdoYXNJbnN0YW5jZScpO1xudmFyIEZ1bmN0aW9uUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyAxOS4yLjMuNiBGdW5jdGlvbi5wcm90b3R5cGVbQEBoYXNJbnN0YW5jZV0oVilcbmlmICghKEhBU19JTlNUQU5DRSBpbiBGdW5jdGlvblByb3RvKSkgcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZihGdW5jdGlvblByb3RvLCBIQVNfSU5TVEFOQ0UsIHsgdmFsdWU6IGZ1bmN0aW9uIChPKSB7XG4gIGlmICh0eXBlb2YgdGhpcyAhPSAnZnVuY3Rpb24nIHx8ICFpc09iamVjdChPKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWlzT2JqZWN0KHRoaXMucHJvdG90eXBlKSkgcmV0dXJuIE8gaW5zdGFuY2VvZiB0aGlzO1xuICAvLyBmb3IgZW52aXJvbm1lbnQgdy9vIG5hdGl2ZSBgQEBoYXNJbnN0YW5jZWAgbG9naWMgZW5vdWdoIGBpbnN0YW5jZW9mYCwgYnV0IGFkZCB0aGlzOlxuICB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKSBpZiAodGhpcy5wcm90b3R5cGUgPT09IE8pIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59IH0pO1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBGUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgbmFtZVJFID0gL15cXHMqZnVuY3Rpb24gKFteIChdKikvO1xudmFyIE5BTUUgPSAnbmFtZSc7XG5cbi8vIDE5LjIuNC4yIG5hbWVcbk5BTUUgaW4gRlByb3RvIHx8IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgZFAoRlByb3RvLCBOQU1FLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoJycgKyB0aGlzKS5tYXRjaChuYW1lUkUpWzFdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgTUFQID0gJ01hcCc7XG5cbi8vIDIzLjEgTWFwIE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKE1BUCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gTWFwKCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBzdHJvbmcuZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTUFQKSwga2V5KTtcbiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjtcbiAgfSxcbiAgLy8gMjMuMS4zLjkgTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSA9PT0gMCA/IDAgOiBrZXksIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nLCB0cnVlKTtcbiIsIi8vIDIwLjIuMi4zIE1hdGguYWNvc2goeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbG9nMXAgPSByZXF1aXJlKCcuL19tYXRoLWxvZzFwJyk7XG52YXIgc3FydCA9IE1hdGguc3FydDtcbnZhciAkYWNvc2ggPSBNYXRoLmFjb3NoO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFjb3NoXG4gIC8vIFY4IGJ1ZzogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM1MDlcbiAgJiYgTWF0aC5mbG9vcigkYWNvc2goTnVtYmVyLk1BWF9WQUxVRSkpID09IDcxMFxuICAvLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYWNvc2goSW5maW5pdHkpIC0+IE5hTlxuICAmJiAkYWNvc2goSW5maW5pdHkpID09IEluZmluaXR5XG4pLCAnTWF0aCcsIHtcbiAgYWNvc2g6IGZ1bmN0aW9uIGFjb3NoKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPCAxID8gTmFOIDogeCA+IDk0OTA2MjY1LjYyNDI1MTU2XG4gICAgICA/IE1hdGgubG9nKHgpICsgTWF0aC5MTjJcbiAgICAgIDogbG9nMXAoeCAtIDEgKyBzcXJ0KHggLSAxKSAqIHNxcnQoeCArIDEpKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuNSBNYXRoLmFzaW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRhc2luaCA9IE1hdGguYXNpbmg7XG5cbmZ1bmN0aW9uIGFzaW5oKHgpIHtcbiAgcmV0dXJuICFpc0Zpbml0ZSh4ID0gK3gpIHx8IHggPT0gMCA/IHggOiB4IDwgMCA/IC1hc2luaCgteCkgOiBNYXRoLmxvZyh4ICsgTWF0aC5zcXJ0KHggKiB4ICsgMSkpO1xufVxuXG4vLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYXNpbmgoMCkgLT4gLTBcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYXNpbmggJiYgMSAvICRhc2luaCgwKSA+IDApLCAnTWF0aCcsIHsgYXNpbmg6IGFzaW5oIH0pO1xuIiwiLy8gMjAuMi4yLjcgTWF0aC5hdGFuaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXRhbmggPSBNYXRoLmF0YW5oO1xuXG4vLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYXRhbmgoLTApIC0+IDBcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYXRhbmggJiYgMSAvICRhdGFuaCgtMCkgPCAwKSwgJ01hdGgnLCB7XG4gIGF0YW5oOiBmdW5jdGlvbiBhdGFuaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpID09IDAgPyB4IDogTWF0aC5sb2coKDEgKyB4KSAvICgxIC0geCkpIC8gMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuOSBNYXRoLmNicnQoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2lnbiA9IHJlcXVpcmUoJy4vX21hdGgtc2lnbicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNicnQ6IGZ1bmN0aW9uIGNicnQoeCkge1xuICAgIHJldHVybiBzaWduKHggPSAreCkgKiBNYXRoLnBvdyhNYXRoLmFicyh4KSwgMSAvIDMpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4xMSBNYXRoLmNsejMyKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNsejMyOiBmdW5jdGlvbiBjbHozMih4KSB7XG4gICAgcmV0dXJuICh4ID4+Pj0gMCkgPyAzMSAtIE1hdGguZmxvb3IoTWF0aC5sb2coeCArIDAuNSkgKiBNYXRoLkxPRzJFKSA6IDMyO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4xMiBNYXRoLmNvc2goeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY29zaDogZnVuY3Rpb24gY29zaCh4KSB7XG4gICAgcmV0dXJuIChleHAoeCA9ICt4KSArIGV4cCgteCkpIC8gMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTQgTWF0aC5leHBtMSh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZXhwbTEgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCRleHBtMSAhPSBNYXRoLmV4cG0xKSwgJ01hdGgnLCB7IGV4cG0xOiAkZXhwbTEgfSk7XG4iLCIvLyAyMC4yLjIuMTYgTWF0aC5mcm91bmQoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgZnJvdW5kOiByZXF1aXJlKCcuL19tYXRoLWZyb3VuZCcpIH0pO1xuIiwiLy8gMjAuMi4yLjE3IE1hdGguaHlwb3QoW3ZhbHVlMVssIHZhbHVlMlssIOKApiBdXV0pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGh5cG90OiBmdW5jdGlvbiBoeXBvdCh2YWx1ZTEsIHZhbHVlMikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbGFyZyA9IDA7XG4gICAgdmFyIGFyZywgZGl2O1xuICAgIHdoaWxlIChpIDwgYUxlbikge1xuICAgICAgYXJnID0gYWJzKGFyZ3VtZW50c1tpKytdKTtcbiAgICAgIGlmIChsYXJnIDwgYXJnKSB7XG4gICAgICAgIGRpdiA9IGxhcmcgLyBhcmc7XG4gICAgICAgIHN1bSA9IHN1bSAqIGRpdiAqIGRpdiArIDE7XG4gICAgICAgIGxhcmcgPSBhcmc7XG4gICAgICB9IGVsc2UgaWYgKGFyZyA+IDApIHtcbiAgICAgICAgZGl2ID0gYXJnIC8gbGFyZztcbiAgICAgICAgc3VtICs9IGRpdiAqIGRpdjtcbiAgICAgIH0gZWxzZSBzdW0gKz0gYXJnO1xuICAgIH1cbiAgICByZXR1cm4gbGFyZyA9PT0gSW5maW5pdHkgPyBJbmZpbml0eSA6IGxhcmcgKiBNYXRoLnNxcnQoc3VtKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTggTWF0aC5pbXVsKHgsIHkpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbXVsID0gTWF0aC5pbXVsO1xuXG4vLyBzb21lIFdlYktpdCB2ZXJzaW9ucyBmYWlscyB3aXRoIGJpZyBudW1iZXJzLCBzb21lIGhhcyB3cm9uZyBhcml0eVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICRpbXVsKDB4ZmZmZmZmZmYsIDUpICE9IC01IHx8ICRpbXVsLmxlbmd0aCAhPSAyO1xufSksICdNYXRoJywge1xuICBpbXVsOiBmdW5jdGlvbiBpbXVsKHgsIHkpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhmZmZmO1xuICAgIHZhciB4biA9ICt4O1xuICAgIHZhciB5biA9ICt5O1xuICAgIHZhciB4bCA9IFVJTlQxNiAmIHhuO1xuICAgIHZhciB5bCA9IFVJTlQxNiAmIHluO1xuICAgIHJldHVybiAwIHwgeGwgKiB5bCArICgoVUlOVDE2ICYgeG4gPj4+IDE2KSAqIHlsICsgeGwgKiAoVUlOVDE2ICYgeW4gPj4+IDE2KSA8PCAxNiA+Pj4gMCk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjIxIE1hdGgubG9nMTAoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgbG9nMTA6IGZ1bmN0aW9uIGxvZzEwKHgpIHtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgKiBNYXRoLkxPRzEwRTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMjAgTWF0aC5sb2cxcCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBsb2cxcDogcmVxdWlyZSgnLi9fbWF0aC1sb2cxcCcpIH0pO1xuIiwiLy8gMjAuMi4yLjIyIE1hdGgubG9nMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBsb2cyOiBmdW5jdGlvbiBsb2cyKHgpIHtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgLyBNYXRoLkxOMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNpZ246IHJlcXVpcmUoJy4vX21hdGgtc2lnbicpIH0pO1xuIiwiLy8gMjAuMi4yLjMwIE1hdGguc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuLy8gVjggbmVhciBDaHJvbWl1bSAzOCBoYXMgYSBwcm9ibGVtIHdpdGggdmVyeSBzbWFsbCBudW1iZXJzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIU1hdGguc2luaCgtMmUtMTcpICE9IC0yZS0xNztcbn0pLCAnTWF0aCcsIHtcbiAgc2luaDogZnVuY3Rpb24gc2luaCh4KSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHggPSAreCkgPCAxXG4gICAgICA/IChleHBtMSh4KSAtIGV4cG0xKC14KSkgLyAyXG4gICAgICA6IChleHAoeCAtIDEpIC0gZXhwKC14IC0gMSkpICogKE1hdGguRSAvIDIpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4zMyBNYXRoLnRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJyk7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgdGFuaDogZnVuY3Rpb24gdGFuaCh4KSB7XG4gICAgdmFyIGEgPSBleHBtMSh4ID0gK3gpO1xuICAgIHZhciBiID0gZXhwbTEoLXgpO1xuICAgIHJldHVybiBhID09IEluZmluaXR5ID8gMSA6IGIgPT0gSW5maW5pdHkgPyAtMSA6IChhIC0gYikgLyAoZXhwKHgpICsgZXhwKC14KSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjM0IE1hdGgudHJ1bmMoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgdHJ1bmM6IGZ1bmN0aW9uIHRydW5jKGl0KSB7XG4gICAgcmV0dXJuIChpdCA+IDAgPyBNYXRoLmZsb29yIDogTWF0aC5jZWlsKShpdCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgJE51bWJlciA9IGdsb2JhbFtOVU1CRVJdO1xudmFyIEJhc2UgPSAkTnVtYmVyO1xudmFyIHByb3RvID0gJE51bWJlci5wcm90b3R5cGU7XG4vLyBPcGVyYSB+MTIgaGFzIGJyb2tlbiBPYmplY3QjdG9TdHJpbmdcbnZhciBCUk9LRU5fQ09GID0gY29mKHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKShwcm90bykpID09IE5VTUJFUjtcbnZhciBUUklNID0gJ3RyaW0nIGluIFN0cmluZy5wcm90b3R5cGU7XG5cbi8vIDcuMS4zIFRvTnVtYmVyKGFyZ3VtZW50KVxudmFyIHRvTnVtYmVyID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBpdCA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCBmYWxzZSk7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gVFJJTSA/IGl0LnRyaW0oKSA6ICR0cmltKGl0LCAzKTtcbiAgICB2YXIgZmlyc3QgPSBpdC5jaGFyQ29kZUF0KDApO1xuICAgIHZhciB0aGlyZCwgcmFkaXgsIG1heENvZGU7XG4gICAgaWYgKGZpcnN0ID09PSA0MyB8fCBmaXJzdCA9PT0gNDUpIHtcbiAgICAgIHRoaXJkID0gaXQuY2hhckNvZGVBdCgyKTtcbiAgICAgIGlmICh0aGlyZCA9PT0gODggfHwgdGhpcmQgPT09IDEyMCkgcmV0dXJuIE5hTjsgLy8gTnVtYmVyKCcrMHgxJykgc2hvdWxkIGJlIE5hTiwgb2xkIFY4IGZpeFxuICAgIH0gZWxzZSBpZiAoZmlyc3QgPT09IDQ4KSB7XG4gICAgICBzd2l0Y2ggKGl0LmNoYXJDb2RlQXQoMSkpIHtcbiAgICAgICAgY2FzZSA2NjogY2FzZSA5ODogcmFkaXggPSAyOyBtYXhDb2RlID0gNDk7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMGJbMDFdKyQvaVxuICAgICAgICBjYXNlIDc5OiBjYXNlIDExMTogcmFkaXggPSA4OyBtYXhDb2RlID0gNTU7IGJyZWFrOyAvLyBmYXN0IGVxdWFsIC9eMG9bMC03XSskL2lcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuICtpdDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGRpZ2l0cyA9IGl0LnNsaWNlKDIpLCBpID0gMCwgbCA9IGRpZ2l0cy5sZW5ndGgsIGNvZGU7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAvLyBwYXJzZUludCBwYXJzZXMgYSBzdHJpbmcgdG8gYSBmaXJzdCB1bmF2YWlsYWJsZSBzeW1ib2xcbiAgICAgICAgLy8gYnV0IFRvTnVtYmVyIHNob3VsZCByZXR1cm4gTmFOIGlmIGEgc3RyaW5nIGNvbnRhaW5zIHVuYXZhaWxhYmxlIHN5bWJvbHNcbiAgICAgICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gbWF4Q29kZSkgcmV0dXJuIE5hTjtcbiAgICAgIH0gcmV0dXJuIHBhcnNlSW50KGRpZ2l0cywgcmFkaXgpO1xuICAgIH1cbiAgfSByZXR1cm4gK2l0O1xufTtcblxuaWYgKCEkTnVtYmVyKCcgMG8xJykgfHwgISROdW1iZXIoJzBiMScpIHx8ICROdW1iZXIoJysweDEnKSkge1xuICAkTnVtYmVyID0gZnVuY3Rpb24gTnVtYmVyKHZhbHVlKSB7XG4gICAgdmFyIGl0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDEgPyAwIDogdmFsdWU7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB0aGF0IGluc3RhbmNlb2YgJE51bWJlclxuICAgICAgLy8gY2hlY2sgb24gMS4uY29uc3RydWN0b3IoZm9vKSBjYXNlXG4gICAgICAmJiAoQlJPS0VOX0NPRiA/IGZhaWxzKGZ1bmN0aW9uICgpIHsgcHJvdG8udmFsdWVPZi5jYWxsKHRoYXQpOyB9KSA6IGNvZih0aGF0KSAhPSBOVU1CRVIpXG4gICAgICAgID8gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UodG9OdW1iZXIoaXQpKSwgdGhhdCwgJE51bWJlcikgOiB0b051bWJlcihpdCk7XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QTihCYXNlKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTNiAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTNiBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzKEJhc2UsIGtleSA9IGtleXNbal0pICYmICFoYXMoJE51bWJlciwga2V5KSkge1xuICAgICAgZFAoJE51bWJlciwga2V5LCBnT1BEKEJhc2UsIGtleSkpO1xuICAgIH1cbiAgfVxuICAkTnVtYmVyLnByb3RvdHlwZSA9IHByb3RvO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICROdW1iZXI7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCBOVU1CRVIsICROdW1iZXIpO1xufVxuIiwiLy8gMjAuMS4yLjEgTnVtYmVyLkVQU0lMT05cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBFUFNJTE9OOiBNYXRoLnBvdygyLCAtNTIpIH0pO1xuIiwiLy8gMjAuMS4yLjIgTnVtYmVyLmlzRmluaXRlKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgX2lzRmluaXRlID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuaXNGaW5pdGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc0Zpbml0ZTogZnVuY3Rpb24gaXNGaW5pdGUoaXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIGl0ID09ICdudW1iZXInICYmIF9pc0Zpbml0ZShpdCk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgaXNJbnRlZ2VyOiByZXF1aXJlKCcuL19pcy1pbnRlZ2VyJykgfSk7XG4iLCIvLyAyMC4xLjIuNCBOdW1iZXIuaXNOYU4obnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7XG4gIGlzTmFOOiBmdW5jdGlvbiBpc05hTihudW1iZXIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgcmV0dXJuIG51bWJlciAhPSBudW1iZXI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMS4yLjUgTnVtYmVyLmlzU2FmZUludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc0ludGVnZXIgPSByZXF1aXJlKCcuL19pcy1pbnRlZ2VyJyk7XG52YXIgYWJzID0gTWF0aC5hYnM7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc1NhZmVJbnRlZ2VyOiBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKG51bWJlcikge1xuICAgIHJldHVybiBpc0ludGVnZXIobnVtYmVyKSAmJiBhYnMobnVtYmVyKSA8PSAweDFmZmZmZmZmZmZmZmZmO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi42IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgTUFYX1NBRkVfSU5URUdFUjogMHgxZmZmZmZmZmZmZmZmZiB9KTtcbiIsIi8vIDIwLjEuMi4xMCBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1JTl9TQUZFX0lOVEVHRVI6IC0weDFmZmZmZmZmZmZmZmZmIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAyMC4xLjIuMTIgTnVtYmVyLnBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCAnTnVtYmVyJywgeyBwYXJzZUZsb2F0OiAkcGFyc2VGbG9hdCB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAyMC4xLjIuMTMgTnVtYmVyLnBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChOdW1iZXIucGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgJ051bWJlcicsIHsgcGFyc2VJbnQ6ICRwYXJzZUludCB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpO1xudmFyICR0b0ZpeGVkID0gMS4wLnRvRml4ZWQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGRhdGEgPSBbMCwgMCwgMCwgMCwgMCwgMF07XG52YXIgRVJST1IgPSAnTnVtYmVyLnRvRml4ZWQ6IGluY29ycmVjdCBpbnZvY2F0aW9uISc7XG52YXIgWkVSTyA9ICcwJztcblxudmFyIG11bHRpcGx5ID0gZnVuY3Rpb24gKG4sIGMpIHtcbiAgdmFyIGkgPSAtMTtcbiAgdmFyIGMyID0gYztcbiAgd2hpbGUgKCsraSA8IDYpIHtcbiAgICBjMiArPSBuICogZGF0YVtpXTtcbiAgICBkYXRhW2ldID0gYzIgJSAxZTc7XG4gICAgYzIgPSBmbG9vcihjMiAvIDFlNyk7XG4gIH1cbn07XG52YXIgZGl2aWRlID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIGkgPSA2O1xuICB2YXIgYyA9IDA7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGMgKz0gZGF0YVtpXTtcbiAgICBkYXRhW2ldID0gZmxvb3IoYyAvIG4pO1xuICAgIGMgPSAoYyAlIG4pICogMWU3O1xuICB9XG59O1xudmFyIG51bVRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaSA9IDY7XG4gIHZhciBzID0gJyc7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGlmIChzICE9PSAnJyB8fCBpID09PSAwIHx8IGRhdGFbaV0gIT09IDApIHtcbiAgICAgIHZhciB0ID0gU3RyaW5nKGRhdGFbaV0pO1xuICAgICAgcyA9IHMgPT09ICcnID8gdCA6IHMgKyByZXBlYXQuY2FsbChaRVJPLCA3IC0gdC5sZW5ndGgpICsgdDtcbiAgICB9XG4gIH0gcmV0dXJuIHM7XG59O1xudmFyIHBvdyA9IGZ1bmN0aW9uICh4LCBuLCBhY2MpIHtcbiAgcmV0dXJuIG4gPT09IDAgPyBhY2MgOiBuICUgMiA9PT0gMSA/IHBvdyh4LCBuIC0gMSwgYWNjICogeCkgOiBwb3coeCAqIHgsIG4gLyAyLCBhY2MpO1xufTtcbnZhciBsb2cgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbiA9IDA7XG4gIHZhciB4MiA9IHg7XG4gIHdoaWxlICh4MiA+PSA0MDk2KSB7XG4gICAgbiArPSAxMjtcbiAgICB4MiAvPSA0MDk2O1xuICB9XG4gIHdoaWxlICh4MiA+PSAyKSB7XG4gICAgbiArPSAxO1xuICAgIHgyIC89IDI7XG4gIH0gcmV0dXJuIG47XG59O1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICghISR0b0ZpeGVkICYmIChcbiAgMC4wMDAwOC50b0ZpeGVkKDMpICE9PSAnMC4wMDAnIHx8XG4gIDAuOS50b0ZpeGVkKDApICE9PSAnMScgfHxcbiAgMS4yNTUudG9GaXhlZCgyKSAhPT0gJzEuMjUnIHx8XG4gIDEwMDAwMDAwMDAwMDAwMDAxMjguMC50b0ZpeGVkKDApICE9PSAnMTAwMDAwMDAwMDAwMDAwMDEyOCdcbikgfHwgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICAkdG9GaXhlZC5jYWxsKHt9KTtcbn0pKSwgJ051bWJlcicsIHtcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cykge1xuICAgIHZhciB4ID0gYU51bWJlclZhbHVlKHRoaXMsIEVSUk9SKTtcbiAgICB2YXIgZiA9IHRvSW50ZWdlcihmcmFjdGlvbkRpZ2l0cyk7XG4gICAgdmFyIHMgPSAnJztcbiAgICB2YXIgbSA9IFpFUk87XG4gICAgdmFyIGUsIHosIGosIGs7XG4gICAgaWYgKGYgPCAwIHx8IGYgPiAyMCkgdGhyb3cgUmFuZ2VFcnJvcihFUlJPUik7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmICh4ICE9IHgpIHJldHVybiAnTmFOJztcbiAgICBpZiAoeCA8PSAtMWUyMSB8fCB4ID49IDFlMjEpIHJldHVybiBTdHJpbmcoeCk7XG4gICAgaWYgKHggPCAwKSB7XG4gICAgICBzID0gJy0nO1xuICAgICAgeCA9IC14O1xuICAgIH1cbiAgICBpZiAoeCA+IDFlLTIxKSB7XG4gICAgICBlID0gbG9nKHggKiBwb3coMiwgNjksIDEpKSAtIDY5O1xuICAgICAgeiA9IGUgPCAwID8geCAqIHBvdygyLCAtZSwgMSkgOiB4IC8gcG93KDIsIGUsIDEpO1xuICAgICAgeiAqPSAweDEwMDAwMDAwMDAwMDAwO1xuICAgICAgZSA9IDUyIC0gZTtcbiAgICAgIGlmIChlID4gMCkge1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgaiA9IGY7XG4gICAgICAgIHdoaWxlIChqID49IDcpIHtcbiAgICAgICAgICBtdWx0aXBseSgxZTcsIDApO1xuICAgICAgICAgIGogLT0gNztcbiAgICAgICAgfVxuICAgICAgICBtdWx0aXBseShwb3coMTAsIGosIDEpLCAwKTtcbiAgICAgICAgaiA9IGUgLSAxO1xuICAgICAgICB3aGlsZSAoaiA+PSAyMykge1xuICAgICAgICAgIGRpdmlkZSgxIDw8IDIzKTtcbiAgICAgICAgICBqIC09IDIzO1xuICAgICAgICB9XG4gICAgICAgIGRpdmlkZSgxIDw8IGopO1xuICAgICAgICBtdWx0aXBseSgxLCAxKTtcbiAgICAgICAgZGl2aWRlKDIpO1xuICAgICAgICBtID0gbnVtVG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpcGx5KDAsIHopO1xuICAgICAgICBtdWx0aXBseSgxIDw8IC1lLCAwKTtcbiAgICAgICAgbSA9IG51bVRvU3RyaW5nKCkgKyByZXBlYXQuY2FsbChaRVJPLCBmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGYgPiAwKSB7XG4gICAgICBrID0gbS5sZW5ndGg7XG4gICAgICBtID0gcyArIChrIDw9IGYgPyAnMC4nICsgcmVwZWF0LmNhbGwoWkVSTywgZiAtIGspICsgbSA6IG0uc2xpY2UoMCwgayAtIGYpICsgJy4nICsgbS5zbGljZShrIC0gZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcyArIG07XG4gICAgfSByZXR1cm4gbTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYU51bWJlclZhbHVlID0gcmVxdWlyZSgnLi9fYS1udW1iZXItdmFsdWUnKTtcbnZhciAkdG9QcmVjaXNpb24gPSAxLjAudG9QcmVjaXNpb247XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKCRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFNy1cbiAgcmV0dXJuICR0b1ByZWNpc2lvbi5jYWxsKDEsIHVuZGVmaW5lZCkgIT09ICcxJztcbn0pIHx8ICEkZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICAkdG9QcmVjaXNpb24uY2FsbCh7fSk7XG59KSksICdOdW1iZXInLCB7XG4gIHRvUHJlY2lzaW9uOiBmdW5jdGlvbiB0b1ByZWNpc2lvbihwcmVjaXNpb24pIHtcbiAgICB2YXIgdGhhdCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCAnTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgICByZXR1cm4gcHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyAkdG9QcmVjaXNpb24uY2FsbCh0aGF0KSA6ICR0b1ByZWNpc2lvbi5jYWxsKHRoYXQsIHByZWNpc2lvbik7XG4gIH1cbn0pO1xuIiwiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0JywgeyBhc3NpZ246IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKSB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMyAvIDE1LjIuMy43IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0aWVzOiByZXF1aXJlKCcuL19vYmplY3QtZHBzJykgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuIiwiLy8gMTkuMS4yLjUgT2JqZWN0LmZyZWV6ZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdmcmVlemUnLCBmdW5jdGlvbiAoJGZyZWV6ZSkge1xuICByZXR1cm4gZnVuY3Rpb24gZnJlZXplKGl0KSB7XG4gICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0T3duUHJvcGVydHlOYW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpLmY7XG59KTtcbiIsIi8vIDE5LjEuMi45IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldFByb3RvdHlwZU9mJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gJGdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xMSBPYmplY3QuaXNFeHRlbnNpYmxlKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdpc0V4dGVuc2libGUnLCBmdW5jdGlvbiAoJGlzRXh0ZW5zaWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gaXNFeHRlbnNpYmxlKGl0KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KGl0KSA/ICRpc0V4dGVuc2libGUgPyAkaXNFeHRlbnNpYmxlKGl0KSA6IHRydWUgOiBmYWxzZTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjEyIE9iamVjdC5pc0Zyb3plbihPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNGcm96ZW4nLCBmdW5jdGlvbiAoJGlzRnJvemVuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc0Zyb3plbihpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNGcm96ZW4gPyAkaXNGcm96ZW4oaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTMgT2JqZWN0LmlzU2VhbGVkKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdpc1NlYWxlZCcsIGZ1bmN0aW9uICgkaXNTZWFsZWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzU2VhbGVkKGl0KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KGl0KSA/ICRpc1NlYWxlZCA/ICRpc1NlYWxlZChpdCkgOiBmYWxzZSA6IHRydWU7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMy4xMCBPYmplY3QuaXModmFsdWUxLCB2YWx1ZTIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGlzOiByZXF1aXJlKCcuL19zYW1lLXZhbHVlJykgfSk7XG4iLCIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTUgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpLm9uRnJlZXplO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ3ByZXZlbnRFeHRlbnNpb25zJywgZnVuY3Rpb24gKCRwcmV2ZW50RXh0ZW5zaW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnMoaXQpIHtcbiAgICByZXR1cm4gJHByZXZlbnRFeHRlbnNpb25zICYmIGlzT2JqZWN0KGl0KSA/ICRwcmV2ZW50RXh0ZW5zaW9ucyhtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjE3IE9iamVjdC5zZWFsKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpLm9uRnJlZXplO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ3NlYWwnLCBmdW5jdGlvbiAoJHNlYWwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYWwoaXQpIHtcbiAgICByZXR1cm4gJHNlYWwgJiYgaXNPYmplY3QoaXQpID8gJHNlYWwobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIHRlc3QgPSB7fTtcbnRlc3RbcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyldID0gJ3onO1xuaWYgKHRlc3QgKyAnJyAhPSAnW29iamVjdCB6XScpIHtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG4gIH0sIHRydWUpO1xufVxuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAxOC4yLjQgcGFyc2VGbG9hdChzdHJpbmcpXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuRiAqIChwYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0KSwgeyBwYXJzZUZsb2F0OiAkcGFyc2VGbG9hdCB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAxOC4yLjUgcGFyc2VJbnQoc3RyaW5nLCByYWRpeClcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5GICogKHBhcnNlSW50ICE9ICRwYXJzZUludCksIHsgcGFyc2VJbnQ6ICRwYXJzZUludCB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKCk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgJFByb21pc2UgPSBnbG9iYWxbUFJPTUlTRV07XG52YXIgaXNOb2RlID0gY2xhc3NvZihwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG52YXIgZW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgSW50ZXJuYWwsIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFdyYXBwZXI7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xuXG52YXIgVVNFX05BVElWRSA9ICEhZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGNvcnJlY3Qgc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlID0gJFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB2YXIgRmFrZVByb21pc2UgPSAocHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9KVtyZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpXSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGVtcHR5LCBlbXB0eSk7XG4gICAgfTtcbiAgICAvLyB1bmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gICAgcmV0dXJuIChpc05vZGUgfHwgdHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCA9PSAnZnVuY3Rpb24nKSAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciByQXBwbHkgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuYXBwbHk7XG52YXIgZkFwcGx5ID0gRnVuY3Rpb24uYXBwbHk7XG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByQXBwbHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KSB7XG4gICAgdmFyIFQgPSBhRnVuY3Rpb24odGFyZ2V0KTtcbiAgICB2YXIgTCA9IGFuT2JqZWN0KGFyZ3VtZW50c0xpc3QpO1xuICAgIHJldHVybiByQXBwbHkgPyByQXBwbHkoVCwgdGhpc0FyZ3VtZW50LCBMKSA6IGZBcHBseS5jYWxsKFQsIHRoaXNBcmd1bWVudCwgTCk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4yIFJlZmxlY3QuY29uc3RydWN0KHRhcmdldCwgYXJndW1lbnRzTGlzdCBbLCBuZXdUYXJnZXRdKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vX2JpbmQnKTtcbnZhciByQ29uc3RydWN0ID0gKHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3QgfHwge30pLmNvbnN0cnVjdDtcblxuLy8gTVMgRWRnZSBzdXBwb3J0cyBvbmx5IDIgYXJndW1lbnRzIGFuZCBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG4vLyBGRiBOaWdodGx5IHNldHMgdGhpcmQgYXJndW1lbnQgYXMgYG5ldy50YXJnZXRgLCBidXQgZG9lcyBub3QgY3JlYXRlIGB0aGlzYCBmcm9tIGl0XG52YXIgTkVXX1RBUkdFVF9CVUcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuICEockNvbnN0cnVjdChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIFtdLCBGKSBpbnN0YW5jZW9mIEYpO1xufSk7XG52YXIgQVJHU19CVUcgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTkVXX1RBUkdFVF9CVUcgfHwgQVJHU19CVUcpLCAnUmVmbGVjdCcsIHtcbiAgY29uc3RydWN0OiBmdW5jdGlvbiBjb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzIC8qICwgbmV3VGFyZ2V0ICovKSB7XG4gICAgYUZ1bmN0aW9uKFRhcmdldCk7XG4gICAgYW5PYmplY3QoYXJncyk7XG4gICAgdmFyIG5ld1RhcmdldCA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gVGFyZ2V0IDogYUZ1bmN0aW9uKGFyZ3VtZW50c1syXSk7XG4gICAgaWYgKEFSR1NfQlVHICYmICFORVdfVEFSR0VUX0JVRykgcmV0dXJuIHJDb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzLCBuZXdUYXJnZXQpO1xuICAgIGlmIChUYXJnZXQgPT0gbmV3VGFyZ2V0KSB7XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIG9wdGltaXphdGlvbiBmb3IgMC00IGFyZ3VtZW50c1xuICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgVGFyZ2V0KCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSk7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICB9XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIGxvdCBvZiBhcmd1bWVudHMgY2FzZVxuICAgICAgdmFyICRhcmdzID0gW251bGxdO1xuICAgICAgJGFyZ3MucHVzaC5hcHBseSgkYXJncywgYXJncyk7XG4gICAgICByZXR1cm4gbmV3IChiaW5kLmFwcGx5KFRhcmdldCwgJGFyZ3MpKSgpO1xuICAgIH1cbiAgICAvLyB3aXRoIGFsdGVyZWQgbmV3VGFyZ2V0LCBub3Qgc3VwcG9ydCBidWlsdC1pbiBjb25zdHJ1Y3RvcnNcbiAgICB2YXIgcHJvdG8gPSBuZXdUYXJnZXQucHJvdG90eXBlO1xuICAgIHZhciBpbnN0YW5jZSA9IGNyZWF0ZShpc09iamVjdChwcm90bykgPyBwcm90byA6IE9iamVjdC5wcm90b3R5cGUpO1xuICAgIHZhciByZXN1bHQgPSBGdW5jdGlvbi5hcHBseS5jYWxsKFRhcmdldCwgaW5zdGFuY2UsIGFyZ3MpO1xuICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogaW5zdGFuY2U7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4zIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcylcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG5cbi8vIE1TIEVkZ2UgaGFzIGJyb2tlbiBSZWZsZWN0LmRlZmluZVByb3BlcnR5IC0gdGhyb3dpbmcgaW5zdGVhZCBvZiByZXR1cm5pbmcgZmFsc2VcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGRQLmYoe30sIDEsIHsgdmFsdWU6IDEgfSksIDEsIHsgdmFsdWU6IDIgfSk7XG59KSwgJ1JlZmxlY3QnLCB7XG4gIGRlZmluZVByb3BlcnR5OiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICBwcm9wZXJ0eUtleSA9IHRvUHJpbWl0aXZlKHByb3BlcnR5S2V5LCB0cnVlKTtcbiAgICBhbk9iamVjdChhdHRyaWJ1dGVzKTtcbiAgICB0cnkge1xuICAgICAgZFAuZih0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS40IFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGRlbGV0ZVByb3BlcnR5OiBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgdmFyIGRlc2MgPSBnT1BEKGFuT2JqZWN0KHRhcmdldCksIHByb3BlcnR5S2V5KTtcbiAgICByZXR1cm4gZGVzYyAmJiAhZGVzYy5jb25maWd1cmFibGUgPyBmYWxzZSA6IGRlbGV0ZSB0YXJnZXRbcHJvcGVydHlLZXldO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDI2LjEuNSBSZWZsZWN0LmVudW1lcmF0ZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgRW51bWVyYXRlID0gZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBhbk9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHZhciBrZXlzID0gdGhpcy5fayA9IFtdOyAgICAgIC8vIGtleXNcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gaXRlcmF0ZWQpIGtleXMucHVzaChrZXkpO1xufTtcbnJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJykoRW51bWVyYXRlLCAnT2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBrZXlzID0gdGhhdC5faztcbiAgdmFyIGtleTtcbiAgZG8ge1xuICAgIGlmICh0aGF0Ll9pID49IGtleXMubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH0gd2hpbGUgKCEoKGtleSA9IGtleXNbdGhhdC5faSsrXSkgaW4gdGhhdC5fdCkpO1xuICByZXR1cm4geyB2YWx1ZToga2V5LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZW51bWVyYXRlOiBmdW5jdGlvbiBlbnVtZXJhdGUodGFyZ2V0KSB7XG4gICAgcmV0dXJuIG5ldyBFbnVtZXJhdGUodGFyZ2V0KTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjcgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS44IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnZXRQcm90byA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS42IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkgWywgcmVjZWl2ZXJdKVxudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbmZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3BlcnR5S2V5IC8qICwgcmVjZWl2ZXIgKi8pIHtcbiAgdmFyIHJlY2VpdmVyID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0YXJnZXQgOiBhcmd1bWVudHNbMl07XG4gIHZhciBkZXNjLCBwcm90bztcbiAgaWYgKGFuT2JqZWN0KHRhcmdldCkgPT09IHJlY2VpdmVyKSByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgaWYgKGRlc2MgPSBnT1BELmYodGFyZ2V0LCBwcm9wZXJ0eUtleSkpIHJldHVybiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICA/IGRlc2MudmFsdWVcbiAgICA6IGRlc2MuZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZGVzYy5nZXQuY2FsbChyZWNlaXZlcilcbiAgICAgIDogdW5kZWZpbmVkO1xuICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkgcmV0dXJuIGdldChwcm90bywgcHJvcGVydHlLZXksIHJlY2VpdmVyKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBnZXQ6IGdldCB9KTtcbiIsIi8vIDI2LjEuOSBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBoYXM6IGZ1bmN0aW9uIGhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIHByb3BlcnR5S2V5IGluIHRhcmdldDtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEwIFJlZmxlY3QuaXNFeHRlbnNpYmxlKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBpc0V4dGVuc2libGU6IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZSh0YXJnZXQpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHJldHVybiAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZSh0YXJnZXQpIDogdHJ1ZTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjExIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IG93bktleXM6IHJlcXVpcmUoJy4vX293bi1rZXlzJykgfSk7XG4iLCIvLyAyNi4xLjEyIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRwcmV2ZW50RXh0ZW5zaW9ucykgJHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIi8vIDI2LjEuMTQgUmVmbGVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzZXRQcm90byA9IHJlcXVpcmUoJy4vX3NldC1wcm90bycpO1xuXG5pZiAoc2V0UHJvdG8pICRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pIHtcbiAgICBzZXRQcm90by5jaGVjayh0YXJnZXQsIHByb3RvKTtcbiAgICB0cnkge1xuICAgICAgc2V0UHJvdG8uc2V0KHRhcmdldCwgcHJvdG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEzIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgWywgcmVjZWl2ZXJdKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzYyA9IGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZiAoIW93bkRlc2MpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90bywgcHJvcGVydHlLZXksIFYsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgb3duRGVzYyA9IGNyZWF0ZURlc2MoMCk7XG4gIH1cbiAgaWYgKGhhcyhvd25EZXNjLCAndmFsdWUnKSkge1xuICAgIGlmIChvd25EZXNjLndyaXRhYmxlID09PSBmYWxzZSB8fCAhaXNPYmplY3QocmVjZWl2ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvciA9IGdPUEQuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yLmdldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iuc2V0IHx8IGV4aXN0aW5nRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGV4aXN0aW5nRGVzY3JpcHRvci52YWx1ZSA9IFY7XG4gICAgICBkUC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGNyZWF0ZURlc2MoMCwgVikpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvd25EZXNjLnNldCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAob3duRGVzYy5zZXQuY2FsbChyZWNlaXZlciwgViksIHRydWUpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IHNldDogc2V0IH0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBCYXNlID0gJFJlZ0V4cDtcbnZhciBwcm90byA9ICRSZWdFeHAucHJvdG90eXBlO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcbi8vIFwibmV3XCIgY3JlYXRlcyBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnZ3kgaGVyZVxudmFyIENPUlJFQ1RfTkVXID0gbmV3ICRSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAoIUNPUlJFQ1RfTkVXIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZTJbcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyldID0gZmFsc2U7XG4gIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gIHJldHVybiAkUmVnRXhwKHJlMSkgIT0gcmUxIHx8ICRSZWdFeHAocmUyKSA9PSByZTIgfHwgJFJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xufSkpKSB7XG4gICRSZWdFeHAgPSBmdW5jdGlvbiBSZWdFeHAocCwgZikge1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHA7XG4gICAgdmFyIHBpUkUgPSBpc1JlZ0V4cChwKTtcbiAgICB2YXIgZmlVID0gZiA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGlSRSAmJiBwaVJFICYmIHAuY29uc3RydWN0b3IgPT09ICRSZWdFeHAgJiYgZmlVID8gcFxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBCYXNlKHBpUkUgJiYgIWZpVSA/IHAuc291cmNlIDogcCwgZilcbiAgICAgICAgOiBCYXNlKChwaVJFID0gcCBpbnN0YW5jZW9mICRSZWdFeHApID8gcC5zb3VyY2UgOiBwLCBwaVJFICYmIGZpVSA/ICRmbGFncy5jYWxsKHApIDogZilcbiAgICAgICwgdGlSRSA/IHRoaXMgOiBwcm90bywgJFJlZ0V4cCk7XG4gIH07XG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFzZVtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgQmFzZVtrZXldID0gaXQ7IH1cbiAgICB9KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZSksIGkgPSAwOyBrZXlzLmxlbmd0aCA+IGk7KSBwcm94eShrZXlzW2krK10pO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICRSZWdFeHA7XG4gICRSZWdFeHAucHJvdG90eXBlID0gcHJvdG87XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCAnUmVnRXhwJywgJFJlZ0V4cCk7XG59XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ1JlZ0V4cCcpO1xuIiwiLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MoKVxuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgLy4vZy5mbGFncyAhPSAnZycpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVxdWlyZSgnLi9fZmxhZ3MnKVxufSk7XG4iLCIvLyBAQG1hdGNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ21hdGNoJywgMSwgZnVuY3Rpb24gKGRlZmluZWQsIE1BVENILCAkbWF0Y2gpIHtcbiAgLy8gMjEuMS4zLjExIFN0cmluZy5wcm90b3R5cGUubWF0Y2gocmVnZXhwKVxuICByZXR1cm4gW2Z1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtNQVRDSF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbTUFUQ0hdKFN0cmluZyhPKSk7XG4gIH0sICRtYXRjaF07XG59KTtcbiIsIi8vIEBAcmVwbGFjZSBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKGRlZmluZWQsIFJFUExBQ0UsICRyZXBsYWNlKSB7XG4gIC8vIDIxLjEuMy4xNCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSlcbiAgcmV0dXJuIFtmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgIHZhciBmbiA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGZuLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgIDogJHJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICB9LCAkcmVwbGFjZV07XG59KTtcbiIsIi8vIEBAc2VhcmNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3NlYXJjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBTRUFSQ0gsICRzZWFyY2gpIHtcbiAgLy8gMjEuMS4zLjE1IFN0cmluZy5wcm90b3R5cGUuc2VhcmNoKHJlZ2V4cClcbiAgcmV0dXJuIFtmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICB9LCAkc2VhcmNoXTtcbn0pO1xuIiwiLy8gQEBzcGxpdCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBTUExJVCwgJHNwbGl0KSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgdmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG4gIHZhciBfc3BsaXQgPSAkc3BsaXQ7XG4gIHZhciAkcHVzaCA9IFtdLnB1c2g7XG4gIHZhciAkU1BMSVQgPSAnc3BsaXQnO1xuICB2YXIgTEVOR1RIID0gJ2xlbmd0aCc7XG4gIHZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG4gIGlmIChcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKSB7XG4gICAgdmFyIE5QQ0cgPSAvKCk/Py8uZXhlYygnJylbMV0gPT09IHVuZGVmaW5lZDsgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICAvLyBiYXNlZCBvbiBlczUtc2hpbSBpbXBsZW1lbnRhdGlvbiwgbmVlZCB0byByZXdvcmsgaXRcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkgcmV0dXJuIF9zcGxpdC5jYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHNwbGl0TGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gNDI5NDk2NzI5NSA6IGxpbWl0ID4+PiAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aCwgaTtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgaWYgKCFOUENHKSBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cCgnXicgKyBzZXBhcmF0b3JDb3B5LnNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yQ29weS5leGVjKHN0cmluZykpIHtcbiAgICAgICAgLy8gYHNlcGFyYXRvckNvcHkubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yIE5QQ0dcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG4gICAgICAgICAgaWYgKCFOUENHICYmIG1hdGNoW0xFTkdUSF0gPiAxKSBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHNbTEVOR1RIXSAtIDI7IGkrKykgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobWF0Y2hbTEVOR1RIXSA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmdbTEVOR1RIXSkgJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0W0xFTkdUSF0gPj0gc3BsaXRMaW1pdCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdKys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmdbTEVOR1RIXSkge1xuICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgb3V0cHV0LnB1c2goJycpO1xuICAgICAgfSBlbHNlIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0W0xFTkdUSF0gPiBzcGxpdExpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIHNwbGl0TGltaXQpIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pIHtcbiAgICAkc3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBfc3BsaXQuY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xuICB9XG4gIC8vIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpXG4gIHJldHVybiBbZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICB2YXIgZm4gPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VwYXJhdG9yW1NQTElUXTtcbiAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdCkgOiAkc3BsaXQuY2FsbChTdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICB9LCAkc3BsaXRdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRmbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgJHRvU3RyaW5nID0gLy4vW1RPX1NUUklOR107XG5cbnZhciBkZWZpbmUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZuLCB0cnVlKTtcbn07XG5cbi8vIDIxLjIuNS4xNCBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKClcbmlmIChyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHsgcmV0dXJuICR0b1N0cmluZy5jYWxsKHsgc291cmNlOiAnYScsIGZsYWdzOiAnYicgfSkgIT0gJy9hL2InOyB9KSkge1xuICBkZWZpbmUoZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIFIgPSBhbk9iamVjdCh0aGlzKTtcbiAgICByZXR1cm4gJy8nLmNvbmNhdChSLnNvdXJjZSwgJy8nLFxuICAgICAgJ2ZsYWdzJyBpbiBSID8gUi5mbGFncyA6ICFERVNDUklQVE9SUyAmJiBSIGluc3RhbmNlb2YgUmVnRXhwID8gJGZsYWdzLmNhbGwoUikgOiB1bmRlZmluZWQpO1xuICB9KTtcbi8vIEZGNDQtIFJlZ0V4cCN0b1N0cmluZyBoYXMgYSB3cm9uZyBuYW1lXG59IGVsc2UgaWYgKCR0b1N0cmluZy5uYW1lICE9IFRPX1NUUklORykge1xuICBkZWZpbmUoZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICR0b1N0cmluZy5jYWxsKHRoaXMpO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNFVCA9ICdTZXQnO1xuXG4vLyAyMy4yIFNldCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShTRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIFNFVCksIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjIgU3RyaW5nLnByb3RvdHlwZS5hbmNob3IobmFtZSlcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2FuY2hvcicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhbmNob3IobmFtZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ25hbWUnLCBuYW1lKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMyBTdHJpbmcucHJvdG90eXBlLmJpZygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdiaWcnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYmlnKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdiaWcnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy40IFN0cmluZy5wcm90b3R5cGUuYmxpbmsoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmxpbmsnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYmxpbmsoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2JsaW5rJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNSBTdHJpbmcucHJvdG90eXBlLmJvbGQoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYm9sZCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBib2xkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdiJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKShmYWxzZSk7XG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4zLjMgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdChwb3MpXG4gIGNvZGVQb2ludEF0OiBmdW5jdGlvbiBjb2RlUG9pbnRBdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuIiwiLy8gMjEuMS4zLjYgU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aChzZWFyY2hTdHJpbmcgWywgZW5kUG9zaXRpb25dKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNvbnRleHQgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpO1xudmFyIEVORFNfV0lUSCA9ICdlbmRzV2l0aCc7XG52YXIgJGVuZHNXaXRoID0gJydbRU5EU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShFTkRTX1dJVEgpLCAnU3RyaW5nJywge1xuICBlbmRzV2l0aDogZnVuY3Rpb24gZW5kc1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgZW5kUG9zaXRpb24gPSBAbGVuZ3RoICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgRU5EU19XSVRIKTtcbiAgICB2YXIgZW5kUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodGhhdC5sZW5ndGgpO1xuICAgIHZhciBlbmQgPSBlbmRQb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gbGVuIDogTWF0aC5taW4odG9MZW5ndGgoZW5kUG9zaXRpb24pLCBsZW4pO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJGVuZHNXaXRoXG4gICAgICA/ICRlbmRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgZW5kKVxuICAgICAgOiB0aGF0LnNsaWNlKGVuZCAtIHNlYXJjaC5sZW5ndGgsIGVuZCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy42IFN0cmluZy5wcm90b3R5cGUuZml4ZWQoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZml4ZWQnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZml4ZWQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3R0JywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNyBTdHJpbmcucHJvdG90eXBlLmZvbnRjb2xvcihjb2xvcilcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZvbnRjb2xvcicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb250Y29sb3IoY29sb3IpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnZm9udCcsICdjb2xvcicsIGNvbG9yKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuOCBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250c2l6ZScsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb250c2l6ZShzaXplKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnc2l6ZScsIHNpemUpO1xuICB9O1xufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50O1xuXG4vLyBsZW5ndGggc2hvdWxkIGJlIDEsIG9sZCBGRiBwcm9ibGVtXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxKSwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4yLjIgU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uY29kZVBvaW50cylcbiAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gZnJvbUNvZGVQb2ludCh4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgY29kZTtcbiAgICB3aGlsZSAoYUxlbiA+IGkpIHtcbiAgICAgIGNvZGUgPSArYXJndW1lbnRzW2krK107XG4gICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBmZmZmKSAhPT0gY29kZSkgdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICByZXMucHVzaChjb2RlIDwgMHgxMDAwMFxuICAgICAgICA/IGZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhkODAwLCBjb2RlICUgMHg0MDAgKyAweGRjMDApXG4gICAgICApO1xuICAgIH0gcmV0dXJuIHJlcy5qb2luKCcnKTtcbiAgfVxufSk7XG4iLCIvLyAyMS4xLjMuNyBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzKHNlYXJjaFN0cmluZywgcG9zaXRpb24gPSAwKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBJTkNMVURFUyA9ICdpbmNsdWRlcyc7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoSU5DTFVERVMpLCAnU3RyaW5nJywge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgcmV0dXJuICEhfmNvbnRleHQodGhpcywgc2VhcmNoU3RyaW5nLCBJTkNMVURFUylcbiAgICAgIC5pbmRleE9mKHNlYXJjaFN0cmluZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjkgU3RyaW5nLnByb3RvdHlwZS5pdGFsaWNzKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2l0YWxpY3MnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gaXRhbGljcygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnaScsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTAgU3RyaW5nLnByb3RvdHlwZS5saW5rKHVybClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2xpbmsnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gbGluayh1cmwpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICdocmVmJywgdXJsKTtcbiAgfTtcbn0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMi40IFN0cmluZy5yYXcoY2FsbFNpdGUsIC4uLnN1YnN0aXR1dGlvbnMpXG4gIHJhdzogZnVuY3Rpb24gcmF3KGNhbGxTaXRlKSB7XG4gICAgdmFyIHRwbCA9IHRvSU9iamVjdChjYWxsU2l0ZS5yYXcpO1xuICAgIHZhciBsZW4gPSB0b0xlbmd0aCh0cGwubGVuZ3RoKTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAobGVuID4gaSkge1xuICAgICAgcmVzLnB1c2goU3RyaW5nKHRwbFtpKytdKSk7XG4gICAgICBpZiAoaSA8IGFMZW4pIHJlcy5wdXNoKFN0cmluZyhhcmd1bWVudHNbaV0pKTtcbiAgICB9IHJldHVybiByZXMuam9pbignJyk7XG4gIH1cbn0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMy4xMyBTdHJpbmcucHJvdG90eXBlLnJlcGVhdChjb3VudClcbiAgcmVwZWF0OiByZXF1aXJlKCcuL19zdHJpbmctcmVwZWF0Jylcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5zbWFsbCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzbWFsbCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzbWFsbCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIvLyAyMS4xLjMuMTggU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyBbLCBwb3NpdGlvbiBdKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNvbnRleHQgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpO1xudmFyIFNUQVJUU19XSVRIID0gJ3N0YXJ0c1dpdGgnO1xudmFyICRzdGFydHNXaXRoID0gJydbU1RBUlRTX1dJVEhdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKFNUQVJUU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgc3RhcnRzV2l0aDogZnVuY3Rpb24gc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICB2YXIgdGhhdCA9IGNvbnRleHQodGhpcywgc2VhcmNoU3RyaW5nLCBTVEFSVFNfV0lUSCk7XG4gICAgdmFyIGluZGV4ID0gdG9MZW5ndGgoTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIHRoYXQubGVuZ3RoKSk7XG4gICAgdmFyIHNlYXJjaCA9IFN0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiAkc3RhcnRzV2l0aFxuICAgICAgPyAkc3RhcnRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgaW5kZXgpXG4gICAgICA6IHRoYXQuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMiBTdHJpbmcucHJvdG90eXBlLnN0cmlrZSgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdHJpa2UnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3RyaWtlKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdHJpa2UnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMyBTdHJpbmcucHJvdG90eXBlLnN1YigpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdWInLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3ViKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdWInLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xNCBTdHJpbmcucHJvdG90eXBlLnN1cCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdXAnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3VwKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdXAnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMS4xLjMuMjUgU3RyaW5nLnByb3RvdHlwZS50cmltKClcbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW0nLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDMpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgTUVUQSA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIHdrc0RlZmluZSA9IHJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKTtcbnZhciBlbnVtS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0ta2V5cycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QRCA9ICRHT1BELmY7XG52YXIgZFAgPSAkRFAuZjtcbnZhciBnT1BOID0gZ09QTkV4dC5mO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyICRKU09OID0gZ2xvYmFsLkpTT047XG52YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBISURERU4gPSB3a3MoJ19oaWRkZW4nKTtcbnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7XG52YXIgaXNFbnVtID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpO1xudmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTtcbnZhciBPUFN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyZWF0ZShkUCh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkUCh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoaXQsIGtleSwgRCkge1xuICB2YXIgcHJvdG9EZXNjID0gZ09QRChPYmplY3RQcm90bywga2V5KTtcbiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZiAocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bykgZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcbn0gOiBkUDtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHN5bS5fayA9IHRhZztcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IFVTRV9OQVRJVkUgJiYgdHlwZW9mICRTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKSB7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7XG4gIGFuT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgYW5PYmplY3QoRCk7XG4gIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghRC5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgRCA9IF9jcmVhdGUoRCwgeyBlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKSB7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuICB2YXIga2V5O1xuICB3aGlsZSAobCA+IGkpICRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApIHtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpIHtcbiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV0gPyBFIDogdHJ1ZTtcbn07XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gIGl0ID0gdG9JT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7XG4gIHJldHVybiBEO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgdmFyIG5hbWVzID0gZ09QTih0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gIHZhciBJU19PUCA9IGl0ID09PSBPYmplY3RQcm90bztcbiAgdmFyIG5hbWVzID0gZ09QTihJU19PUCA/IE9QU3ltYm9scyA6IHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIChJU19PUCA/IGhhcyhPYmplY3RQcm90bywga2V5KSA6IHRydWUpKSByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmICghVVNFX05BVElWRSkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG4gICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyICRzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90bykgJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG4gICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gICRHT1BELmYgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkRFAuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuJEpTT04gJiYgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoIVVTRV9OQVRJVkUgfHwgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoeyBhOiBTIH0pICE9ICd7fScgfHwgX3N0cmluZ2lmeShPYmplY3QoUykpICE9ICd7fSc7XG59KSksICdKU09OJywge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkge1xuICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgICRyZXBsYWNlciA9IHJlcGxhY2VyID0gYXJnc1sxXTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmVwbGFjZXIgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiAkcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5BcnJheUJ1ZmZlcjtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgJEFycmF5QnVmZmVyID0gYnVmZmVyLkFycmF5QnVmZmVyO1xudmFyICREYXRhVmlldyA9IGJ1ZmZlci5EYXRhVmlldztcbnZhciAkaXNWaWV3ID0gJHR5cGVkLkFCViAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG52YXIgJHNsaWNlID0gJEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbnZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQXJyYXlCdWZmZXIgIT09ICRBcnJheUJ1ZmZlciksIHsgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlciB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhJHR5cGVkLkNPTlNUUiwgQVJSQVlfQlVGRkVSLCB7XG4gIC8vIDI0LjEuMy4xIEFycmF5QnVmZmVyLmlzVmlldyhhcmcpXG4gIGlzVmlldzogZnVuY3Rpb24gaXNWaWV3KGl0KSB7XG4gICAgcmV0dXJuICRpc1ZpZXcgJiYgJGlzVmlldyhpdCkgfHwgaXNPYmplY3QoaXQpICYmIFZJRVcgaW4gaXQ7XG4gIH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuVSArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIW5ldyAkQXJyYXlCdWZmZXIoMikuc2xpY2UoMSwgdW5kZWZpbmVkKS5ieXRlTGVuZ3RoO1xufSksIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjQuMyBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Uoc3RhcnQsIGVuZClcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoJHNsaWNlICE9PSB1bmRlZmluZWQgJiYgZW5kID09PSB1bmRlZmluZWQpIHJldHVybiAkc2xpY2UuY2FsbChhbk9iamVjdCh0aGlzKSwgc3RhcnQpOyAvLyBGRiBmaXhcbiAgICB2YXIgbGVuID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGZpbmFsID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kLCBsZW4pO1xuICAgIHZhciByZXN1bHQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW5hbCAtIGZpcnN0KSk7XG4gICAgdmFyIHZpZXdTID0gbmV3ICREYXRhVmlldyh0aGlzKTtcbiAgICB2YXIgdmlld1QgPSBuZXcgJERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW5hbCkge1xuICAgICAgdmlld1Quc2V0VWludDgoaW5kZXgrKywgdmlld1MuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoQVJSQVlfQlVGRkVSKTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL190eXBlZCcpLkFCViwge1xuICBEYXRhVmlldzogcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJykuRGF0YVZpZXdcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnRmxvYXQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnRmxvYXQ2NCcsIDgsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDY0QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50MTYnLCAyLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50MTZBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MTZBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50MzInLCA0LCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDhBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OENsYW1wZWRBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSwgdHJ1ZSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJyk7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfTUFQID0gJ1dlYWtNYXAnO1xudmFyIGdldFdlYWsgPSBtZXRhLmdldFdlYWs7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlO1xudmFyIHRtcCA9IHt9O1xudmFyIEludGVybmFsTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gIH07XG59O1xuXG52YXIgbWV0aG9kcyA9IHtcbiAgLy8gMjMuMy4zLjMgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCksIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19NQVAsIHdyYXBwZXIsIG1ldGhvZHMsIHdlYWssIHRydWUsIHRydWUpO1xuXG4vLyBJRTExIFdlYWtNYXAgZnJvemVuIGtleXMgZml4XG5pZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3ICRXZWFrTWFwKCkuc2V0KChPYmplY3QuZnJlZXplIHx8IE9iamVjdCkodG1wKSwgNykuZ2V0KHRtcCkgIT0gNzsgfSkpIHtcbiAgSW50ZXJuYWxNYXAgPSB3ZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIFdFQUtfTUFQKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwcm90byA9ICRXZWFrTWFwLnByb3RvdHlwZTtcbiAgICB2YXIgbWV0aG9kID0gcHJvdG9ba2V5XTtcbiAgICByZWRlZmluZShwcm90bywga2V5LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgLy8gc3RvcmUgZnJvemVuIG9iamVjdHMgb24gaW50ZXJuYWwgd2Vha21hcCBzaGltXG4gICAgICBpZiAoaXNPYmplY3QoYSkgJiYgIWlzRXh0ZW5zaWJsZShhKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2YpIHRoaXMuX2YgPSBuZXcgSW50ZXJuYWxNYXAoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zba2V5XShhLCBiKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PSAnc2V0JyA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICAvLyBzdG9yZSBhbGwgdGhlIHJlc3Qgb24gbmF0aXZlIHdlYWttYXBcbiAgICAgIH0gcmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMsIGEsIGIpO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWFrID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgV0VBS19TRVQgPSAnV2Vha1NldCc7XG5cbi8vIDIzLjQgV2Vha1NldCBPYmplY3RzXG5yZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19TRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtTZXQoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy40LjMuMSBXZWFrU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHdlYWsuZGVmKHZhbGlkYXRlKHRoaXMsIFdFQUtfU0VUKSwgdmFsdWUsIHRydWUpO1xuICB9XG59LCB3ZWFrLCBmYWxzZSwgdHJ1ZSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdE1hcFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuLCBBO1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgMSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0TWFwJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdHRlblxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0dGVuOiBmdW5jdGlvbiBmbGF0dGVuKC8qIGRlcHRoQXJnID0gMSAqLykge1xuICAgIHZhciBkZXB0aEFyZyA9IGFyZ3VtZW50c1swXTtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIGRlcHRoQXJnID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoQXJnKSk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmxhdHRlbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnaW5jbHVkZXMnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsZHJvbi90YzM5LW5vdGVzL2Jsb2IvbWFzdGVyL2VzNi8yMDE0LTA5L3NlcHQtMjUubWQjNTEwLWdsb2JhbGFzYXAtZm9yLWVucXVldWluZy1hLW1pY3JvdGFza1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIHByb2Nlc3MgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wcm9jZXNzO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHtcbiAgYXNhcDogZnVuY3Rpb24gYXNhcChmbikge1xuICAgIHZhciBkb21haW4gPSBpc05vZGUgJiYgcHJvY2Vzcy5kb21haW47XG4gICAgbWljcm90YXNrKGRvbWFpbiA/IGRvbWFpbi5iaW5kKGZuKSA6IGZuKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL3Byb3Bvc2FsLWlzLWVycm9yXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0Vycm9yJywge1xuICBpc0Vycm9yOiBmdW5jdGlvbiBpc0Vycm9yKGl0KSB7XG4gICAgcmV0dXJuIGNvZihpdCkgPT09ICdFcnJvcic7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZ2xvYmFsXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLmZyb21cbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLWZyb20nKSgnTWFwJyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ01hcCcpO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdNYXAnLCB7IHRvSlNPTjogcmVxdWlyZSgnLi9fY29sbGVjdGlvbi10by1qc29uJykoJ01hcCcpIH0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjbGFtcDogZnVuY3Rpb24gY2xhbXAoeCwgbG93ZXIsIHVwcGVyKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHVwcGVyLCBNYXRoLm1heChsb3dlciwgeCkpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAgfSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIFJBRF9QRVJfREVHID0gMTgwIC8gTWF0aC5QSTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBkZWdyZWVzOiBmdW5jdGlvbiBkZWdyZWVzKHJhZGlhbnMpIHtcbiAgICByZXR1cm4gcmFkaWFucyAqIFJBRF9QRVJfREVHO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2NhbGUgPSByZXF1aXJlKCcuL19tYXRoLXNjYWxlJyk7XG52YXIgZnJvdW5kID0gcmVxdWlyZSgnLi9fbWF0aC1mcm91bmQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBmc2NhbGU6IGZ1bmN0aW9uIGZzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpIHtcbiAgICByZXR1cm4gZnJvdW5kKHNjYWxlKHgsIGluTG93LCBpbkhpZ2gsIG91dExvdywgb3V0SGlnaCkpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlhZGRoOiBmdW5jdGlvbiBpYWRkaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgKyAoeTEgPj4+IDApICsgKCgkeDAgJiAkeTAgfCAoJHgwIHwgJHkwKSAmIH4oJHgwICsgJHkwID4+PiAwKSkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgaW11bGg6IGZ1bmN0aW9uIGltdWxoKHUsIHYpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhmZmZmO1xuICAgIHZhciAkdSA9ICt1O1xuICAgIHZhciAkdiA9ICt2O1xuICAgIHZhciB1MCA9ICR1ICYgVUlOVDE2O1xuICAgIHZhciB2MCA9ICR2ICYgVUlOVDE2O1xuICAgIHZhciB1MSA9ICR1ID4+IDE2O1xuICAgIHZhciB2MSA9ICR2ID4+IDE2O1xuICAgIHZhciB0ID0gKHUxICogdjAgPj4+IDApICsgKHUwICogdjAgPj4+IDE2KTtcbiAgICByZXR1cm4gdTEgKiB2MSArICh0ID4+IDE2KSArICgodTAgKiB2MSA+Pj4gMCkgKyAodCAmIFVJTlQxNikgPj4gMTYpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlzdWJoOiBmdW5jdGlvbiBpc3ViaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgLSAoeTEgPj4+IDApIC0gKCh+JHgwICYgJHkwIHwgfigkeDAgXiAkeTApICYgJHgwIC0gJHkwID4+PiAwKSA+Pj4gMzEpIHwgMDtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IFJBRF9QRVJfREVHOiAxODAgLyBNYXRoLlBJIH0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBERUdfUEVSX1JBRCA9IE1hdGguUEkgLyAxODA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgcmFkaWFuczogZnVuY3Rpb24gcmFkaWFucyhkZWdyZWVzKSB7XG4gICAgcmV0dXJuIGRlZ3JlZXMgKiBERUdfUEVSX1JBRDtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNjYWxlOiByZXF1aXJlKCcuL19tYXRoLXNjYWxlJykgfSk7XG4iLCIvLyBodHRwOi8vamZiYXN0aWVuLmdpdGh1Yi5pby9wYXBlcnMvTWF0aC5zaWduYml0Lmh0bWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgc2lnbmJpdDogZnVuY3Rpb24gc2lnbmJpdCh4KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuICh4ID0gK3gpICE9IHggPyB4IDogeCA9PSAwID8gMSAvIHggPT0gSW5maW5pdHkgOiB4ID4gMDtcbn0gfSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB1bXVsaDogZnVuY3Rpb24gdW11bGgodSwgdikge1xuICAgIHZhciBVSU5UMTYgPSAweGZmZmY7XG4gICAgdmFyICR1ID0gK3U7XG4gICAgdmFyICR2ID0gK3Y7XG4gICAgdmFyIHUwID0gJHUgJiBVSU5UMTY7XG4gICAgdmFyIHYwID0gJHYgJiBVSU5UMTY7XG4gICAgdmFyIHUxID0gJHUgPj4+IDE2O1xuICAgIHZhciB2MSA9ICR2ID4+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+Pj4gMTYpICsgKCh1MCAqIHYxID4+PiAwKSArICh0ICYgVUlOVDE2KSA+Pj4gMTYpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG5cbi8vIEIuMi4yLjIgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcilcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2RlZmluZUdldHRlcl9fOiBmdW5jdGlvbiBfX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcikge1xuICAgICRkZWZpbmVQcm9wZXJ0eS5mKHRvT2JqZWN0KHRoaXMpLCBQLCB7IGdldDogYUZ1bmN0aW9uKGdldHRlciksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuXG4vLyBCLjIuMi4zIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19kZWZpbmVTZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpIHtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwgeyBzZXQ6IGFGdW5jdGlvbihzZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRlbnRyaWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKGl0KSB7XG4gICAgcmV0dXJuICRlbnRyaWVzKGl0KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG4vLyBCLjIuMi40IE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfXyhQKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fbG9va3VwR2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18oUCkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEsgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgICB2YXIgRDtcbiAgICBkbyB7XG4gICAgICBpZiAoRCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBLKSkgcmV0dXJuIEQuZ2V0O1xuICAgIH0gd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG4vLyBCLjIuMi41IE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBTZXR0ZXJfXyhQKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fbG9va3VwU2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwU2V0dGVyX18oUCkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEsgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgICB2YXIgRDtcbiAgICBkbyB7XG4gICAgICBpZiAoRCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBLKSkgcmV0dXJuIEQuc2V0O1xuICAgIH0gd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR2YWx1ZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKShmYWxzZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhpdCkge1xuICAgIHJldHVybiAkdmFsdWVzKGl0KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemVucGFyc2luZy9lcy1vYnNlcnZhYmxlXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBPQlNFUlZBQkxFID0gcmVxdWlyZSgnLi9fd2tzJykoJ29ic2VydmFibGUnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBSRVRVUk4gPSBmb3JPZi5SRVRVUk47XG5cbnZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZuID09IG51bGwgPyB1bmRlZmluZWQgOiBhRnVuY3Rpb24oZm4pO1xufTtcblxudmFyIGNsZWFudXBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHZhciBjbGVhbnVwID0gc3Vic2NyaXB0aW9uLl9jO1xuICBpZiAoY2xlYW51cCkge1xuICAgIHN1YnNjcmlwdGlvbi5fYyA9IHVuZGVmaW5lZDtcbiAgICBjbGVhbnVwKCk7XG4gIH1cbn07XG5cbnZhciBzdWJzY3JpcHRpb25DbG9zZWQgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHJldHVybiBzdWJzY3JpcHRpb24uX28gPT09IHVuZGVmaW5lZDtcbn07XG5cbnZhciBjbG9zZVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gIH1cbn07XG5cbnZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAob2JzZXJ2ZXIsIHN1YnNjcmliZXIpIHtcbiAgYW5PYmplY3Qob2JzZXJ2ZXIpO1xuICB0aGlzLl9jID0gdW5kZWZpbmVkO1xuICB0aGlzLl9vID0gb2JzZXJ2ZXI7XG4gIG9ic2VydmVyID0gbmV3IFN1YnNjcmlwdGlvbk9ic2VydmVyKHRoaXMpO1xuICB0cnkge1xuICAgIHZhciBjbGVhbnVwID0gc3Vic2NyaWJlcihvYnNlcnZlcik7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IGNsZWFudXA7XG4gICAgaWYgKGNsZWFudXAgIT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiBjbGVhbnVwLnVuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSBjbGVhbnVwID0gZnVuY3Rpb24gKCkgeyBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgIGVsc2UgYUZ1bmN0aW9uKGNsZWFudXApO1xuICAgICAgdGhpcy5fYyA9IGNsZWFudXA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgcmV0dXJuO1xuICB9IGlmIChzdWJzY3JpcHRpb25DbG9zZWQodGhpcykpIGNsZWFudXBTdWJzY3JpcHRpb24odGhpcyk7XG59O1xuXG5TdWJzY3JpcHRpb24ucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkgeyBjbG9zZVN1YnNjcmlwdGlvbih0aGlzKTsgfVxufSk7XG5cbnZhciBTdWJzY3JpcHRpb25PYnNlcnZlciA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgdGhpcy5fcyA9IHN1YnNjcmlwdGlvbjtcbn07XG5cblN1YnNjcmlwdGlvbk9ic2VydmVyLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5uZXh0KTtcbiAgICAgICAgaWYgKG0pIHJldHVybiBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVycm9yOiBmdW5jdGlvbiBlcnJvcih2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmIChzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkgdGhyb3cgdmFsdWU7XG4gICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIuZXJyb3IpO1xuICAgICAgaWYgKCFtKSB0aHJvdyB2YWx1ZTtcbiAgICAgIHZhbHVlID0gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZSh2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLmNvbXBsZXRlKTtcbiAgICAgICAgdmFsdWUgPSBtID8gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnZhciAkT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlcikge1xuICBhbkluc3RhbmNlKHRoaXMsICRPYnNlcnZhYmxlLCAnT2JzZXJ2YWJsZScsICdfZicpLl9mID0gYUZ1bmN0aW9uKHN1YnNjcmliZXIpO1xufTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUucHJvdG90eXBlLCB7XG4gIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24ob2JzZXJ2ZXIsIHRoaXMuX2YpO1xuICB9LFxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgKGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgYUZ1bmN0aW9uKGZuKTtcbiAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGF0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZm4odmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgY29tcGxldGU6IHJlc29sdmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUsIHtcbiAgZnJvbTogZnVuY3Rpb24gZnJvbSh4KSB7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiAkT2JzZXJ2YWJsZTtcbiAgICB2YXIgbWV0aG9kID0gZ2V0TWV0aG9kKGFuT2JqZWN0KHgpW09CU0VSVkFCTEVdKTtcbiAgICBpZiAobWV0aG9kKSB7XG4gICAgICB2YXIgb2JzZXJ2YWJsZSA9IGFuT2JqZWN0KG1ldGhvZC5jYWxsKHgpKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDID8gb2JzZXJ2YWJsZSA6IG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGZvck9mKHgsIGZhbHNlLCBmdW5jdGlvbiAoaXQpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdCk7XG4gICAgICAgICAgICAgIGlmIChkb25lKSByZXR1cm4gUkVUVVJOO1xuICAgICAgICAgICAgfSkgPT09IFJFVFVSTikgcmV0dXJuO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChkb25lKSB0aHJvdyBlO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGRvbmUgPSB0cnVlOyB9O1xuICAgIH0pO1xuICB9LFxuICBvZjogZnVuY3Rpb24gb2YoKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVtcyA9IG5ldyBBcnJheShsKTsgaSA8IGw7KSBpdGVtc1tpXSA9IGFyZ3VtZW50c1tpKytdO1xuICAgIHJldHVybiBuZXcgKHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlKShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1zLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGl0ZW1zW2pdKTtcbiAgICAgICAgICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgICAgICAgfSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGRvbmUgPSB0cnVlOyB9O1xuICAgIH0pO1xuICB9XG59KTtcblxuaGlkZSgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIE9CU0VSVkFCTEUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBPYnNlcnZhYmxlOiAkT2JzZXJ2YWJsZSB9KTtcblxucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKSgnT2JzZXJ2YWJsZScpO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gbWV0YWRhdGEuc2V0O1xuXG5tZXRhZGF0YS5leHAoeyBkZWZpbmVNZXRhZGF0YTogZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgdGFyZ2V0S2V5KSB7XG4gIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIGFuT2JqZWN0KHRhcmdldCksIHRvTWV0YUtleSh0YXJnZXRLZXkpKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBtZXRhZGF0YS5tYXA7XG52YXIgc3RvcmUgPSBtZXRhZGF0YS5zdG9yZTtcblxubWV0YWRhdGEuZXhwKHsgZGVsZXRlTWV0YWRhdGE6IGZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoYW5PYmplY3QodGFyZ2V0KSwgdGFyZ2V0S2V5LCBmYWxzZSk7XG4gIGlmIChtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkIHx8ICFtZXRhZGF0YU1hcFsnZGVsZXRlJ10obWV0YWRhdGFLZXkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChtZXRhZGF0YU1hcC5zaXplKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIHRhcmdldE1ldGFkYXRhWydkZWxldGUnXSh0YXJnZXRLZXkpO1xuICByZXR1cm4gISF0YXJnZXRNZXRhZGF0YS5zaXplIHx8IHN0b3JlWydkZWxldGUnXSh0YXJnZXQpO1xufSB9KTtcbiIsInZhciBTZXQgPSByZXF1aXJlKCcuL2VzNi5zZXQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xudmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gbWV0YWRhdGEua2V5cztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeU1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uIChPLCBQKSB7XG4gIHZhciBvS2V5cyA9IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIGlmIChwYXJlbnQgPT09IG51bGwpIHJldHVybiBvS2V5cztcbiAgdmFyIHBLZXlzID0gb3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgcmV0dXJuIHBLZXlzLmxlbmd0aCA/IG9LZXlzLmxlbmd0aCA/IGZyb20obmV3IFNldChvS2V5cy5jb25jYXQocEtleXMpKSkgOiBwS2V5cyA6IG9LZXlzO1xufTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0TWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHJldHVybiBvcmRpbmFyeU1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5R2V0TWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRNZXRhZGF0YTogZnVuY3Rpb24gZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gbWV0YWRhdGEua2V5cztcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG5cbm1ldGFkYXRhLmV4cCh7IGdldE93bk1ldGFkYXRhS2V5czogZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGFLZXlzKHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlPd25NZXRhZGF0YUtleXMoYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzFdKSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEgPSBtZXRhZGF0YS5nZXQ7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRPd25NZXRhZGF0YTogZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG52YXIgb3JkaW5hcnlIYXNNZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgaGFzT3duID0gb3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIGlmIChoYXNPd24pIHJldHVybiB0cnVlO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIHJldHVybiBwYXJlbnQgIT09IG51bGwgPyBvcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApIDogZmFsc2U7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBoYXNNZXRhZGF0YTogZnVuY3Rpb24gaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlIYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5oYXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBoYXNPd25NZXRhZGF0YTogZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KVxuICAgICwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuIiwidmFyICRtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgdG9NZXRhS2V5ID0gJG1ldGFkYXRhLmtleTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gJG1ldGFkYXRhLnNldDtcblxuJG1ldGFkYXRhLmV4cCh7IG1ldGFkYXRhOiBmdW5jdGlvbiBtZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb3JhdG9yKHRhcmdldCwgdGFyZ2V0S2V5KSB7XG4gICAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShcbiAgICAgIG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLFxuICAgICAgKHRhcmdldEtleSAhPT0gdW5kZWZpbmVkID8gYW5PYmplY3QgOiBhRnVuY3Rpb24pKHRhcmdldCksXG4gICAgICB0b01ldGFLZXkodGFyZ2V0S2V5KVxuICAgICk7XG4gIH07XG59IH0pO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0LmZyb21cbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLWZyb20nKSgnU2V0Jyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1NldCcpO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdTZXQnLCB7IHRvSlNPTjogcmVxdWlyZSgnLi9fY29sbGVjdGlvbi10by1qc29uJykoJ1NldCcpIH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIGF0OiBmdW5jdGlvbiBhdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9TdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBnZXRGbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG52YXIgUmVnRXhwUHJvdG8gPSBSZWdFeHAucHJvdG90eXBlO1xuXG52YXIgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yID0gZnVuY3Rpb24gKHJlZ2V4cCwgc3RyaW5nKSB7XG4gIHRoaXMuX3IgPSByZWdleHA7XG4gIHRoaXMuX3MgPSBzdHJpbmc7XG59O1xuXG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKCRSZWdFeHBTdHJpbmdJdGVyYXRvciwgJ1JlZ0V4cCBTdHJpbmcnLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgbWF0Y2ggPSB0aGlzLl9yLmV4ZWModGhpcy5fcyk7XG4gIHJldHVybiB7IHZhbHVlOiBtYXRjaCwgZG9uZTogbWF0Y2ggPT09IG51bGwgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgbWF0Y2hBbGw6IGZ1bmN0aW9uIG1hdGNoQWxsKHJlZ2V4cCkge1xuICAgIGRlZmluZWQodGhpcyk7XG4gICAgaWYgKCFpc1JlZ0V4cChyZWdleHApKSB0aHJvdyBUeXBlRXJyb3IocmVnZXhwICsgJyBpcyBub3QgYSByZWdleHAhJyk7XG4gICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgdmFyIGZsYWdzID0gJ2ZsYWdzJyBpbiBSZWdFeHBQcm90byA/IFN0cmluZyhyZWdleHAuZmxhZ3MpIDogZ2V0RmxhZ3MuY2FsbChyZWdleHApO1xuICAgIHZhciByeCA9IG5ldyBSZWdFeHAocmVnZXhwLnNvdXJjZSwgfmZsYWdzLmluZGV4T2YoJ2cnKSA/IGZsYWdzIDogJ2cnICsgZmxhZ3MpO1xuICAgIHJ4Lmxhc3RJbmRleCA9IHRvTGVuZ3RoKHJlZ2V4cC5sYXN0SW5kZXgpO1xuICAgIHJldHVybiBuZXcgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKHJ4LCBTKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFkID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzI4MFxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAvVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCksICdTdHJpbmcnLCB7XG4gIHBhZEVuZDogZnVuY3Rpb24gcGFkRW5kKG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmYWxzZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhZCA9IHJlcXVpcmUoJy4vX3N0cmluZy1wYWQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8yODBcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogL1ZlcnNpb25cXC8xMFxcLlxcZCsoXFwuXFxkKyk/IFNhZmFyaVxcLy8udGVzdCh1c2VyQWdlbnQpLCAnU3RyaW5nJywge1xuICBwYWRTdGFydDogZnVuY3Rpb24gcGFkU3RhcnQobWF4TGVuZ3RoIC8qICwgZmlsbFN0cmluZyA9ICcgJyAqLykge1xuICAgIHJldHVybiAkcGFkKHRoaXMsIG1heExlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIHRydWUpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1MZWZ0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltTGVmdCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMSk7XG4gIH07XG59LCAndHJpbVN0YXJ0Jyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltUmlnaHQnLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMik7XG4gIH07XG59LCAndHJpbUVuZCcpO1xuIiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdhc3luY0l0ZXJhdG9yJyk7XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ29ic2VydmFibGUnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTeXN0ZW0nLCB7IGdsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJykgfSk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLmZyb21cbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLWZyb20nKSgnV2Vha01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha21hcC5vZlxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tb2YnKSgnV2Vha01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha3NldC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1dlYWtTZXQnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1dlYWtTZXQnKTtcbiIsInZhciAkaXRlcmF0b3JzID0gcmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbnZhciBUT19TVFJJTkdfVEFHID0gd2tzKCd0b1N0cmluZ1RhZycpO1xudmFyIEFycmF5VmFsdWVzID0gSXRlcmF0b3JzLkFycmF5O1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBDU1NSdWxlTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IGZhbHNlLFxuICBDU1NWYWx1ZUxpc3Q6IGZhbHNlLFxuICBDbGllbnRSZWN0TGlzdDogZmFsc2UsXG4gIERPTVJlY3RMaXN0OiBmYWxzZSxcbiAgRE9NU3RyaW5nTGlzdDogZmFsc2UsXG4gIERPTVRva2VuTGlzdDogdHJ1ZSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IGZhbHNlLFxuICBGaWxlTGlzdDogZmFsc2UsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTENvbGxlY3Rpb246IGZhbHNlLFxuICBIVE1MRm9ybUVsZW1lbnQ6IGZhbHNlLFxuICBIVE1MU2VsZWN0RWxlbWVudDogZmFsc2UsXG4gIE1lZGlhTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIE1pbWVUeXBlQXJyYXk6IGZhbHNlLFxuICBOYW1lZE5vZGVNYXA6IGZhbHNlLFxuICBOb2RlTGlzdDogdHJ1ZSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogZmFsc2UsXG4gIFBsdWdpbjogZmFsc2UsXG4gIFBsdWdpbkFycmF5OiBmYWxzZSxcbiAgU1ZHTGVuZ3RoTGlzdDogZmFsc2UsXG4gIFNWR051bWJlckxpc3Q6IGZhbHNlLFxuICBTVkdQYXRoU2VnTGlzdDogZmFsc2UsXG4gIFNWR1BvaW50TGlzdDogZmFsc2UsXG4gIFNWR1N0cmluZ0xpc3Q6IGZhbHNlLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiBmYWxzZSxcbiAgU291cmNlQnVmZmVyTGlzdDogZmFsc2UsXG4gIFN0eWxlU2hlZXRMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgVGV4dFRyYWNrQ3VlTGlzdDogZmFsc2UsXG4gIFRleHRUcmFja0xpc3Q6IGZhbHNlLFxuICBUb3VjaExpc3Q6IGZhbHNlXG59O1xuXG5mb3IgKHZhciBjb2xsZWN0aW9ucyA9IGdldEtleXMoRE9NSXRlcmFibGVzKSwgaSA9IDA7IGkgPCBjb2xsZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IGNvbGxlY3Rpb25zW2ldO1xuICB2YXIgZXhwbGljaXQgPSBET01JdGVyYWJsZXNbTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICB2YXIga2V5O1xuICBpZiAocHJvdG8pIHtcbiAgICBpZiAoIXByb3RvW0lURVJBVE9SXSkgaGlkZShwcm90bywgSVRFUkFUT1IsIEFycmF5VmFsdWVzKTtcbiAgICBpZiAoIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgICBJdGVyYXRvcnNbTkFNRV0gPSBBcnJheVZhbHVlcztcbiAgICBpZiAoZXhwbGljaXQpIGZvciAoa2V5IGluICRpdGVyYXRvcnMpIGlmICghcHJvdG9ba2V5XSkgcmVkZWZpbmUocHJvdG8sIGtleSwgJGl0ZXJhdG9yc1trZXldLCB0cnVlKTtcbiAgfVxufVxuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CLCB7XG4gIHNldEltbWVkaWF0ZTogJHRhc2suc2V0LFxuICBjbGVhckltbWVkaWF0ZTogJHRhc2suY2xlYXJcbn0pO1xuIiwiLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmbiwgdGltZSAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBmYWxzZTtcbiAgICByZXR1cm4gc2V0KGJvdW5kQXJncyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBmbiwgdGltZSk7XG4gIH07XG59O1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIgKyAkZXhwb3J0LkYgKiBNU0lFLCB7XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcbiIsInJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNsejMyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50cnVuYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5saW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdWInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1cCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuam9pbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb3J0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29tZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQtaW5kZXgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLXNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmhhcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcuYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5tYXRjaC1hbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC52YWx1ZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0LnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZ2xvYmFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5jbGFtcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmRlZy1wZXItcmFkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmZzY2FsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaXN1YmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pbXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnJhZC1wZXItZGVnJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnNjYWxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgudW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5zaWduYml0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hc2FwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmltbWVkaWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tb2R1bGVzL19jb3JlJyk7XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSwgZXZhbCkoXCJ0aGlzXCIpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwiZnVuY3Rpb24gd2VicGFja0VtcHR5Q29udGV4dChyZXEpIHtcblx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdHRocm93IGU7XG59XG53ZWJwYWNrRW1wdHlDb250ZXh0LmtleXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9O1xud2VicGFja0VtcHR5Q29udGV4dC5yZXNvbHZlID0gd2VicGFja0VtcHR5Q29udGV4dDtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0VtcHR5Q29udGV4dDtcbndlYnBhY2tFbXB0eUNvbnRleHQuaWQgPSBcIi4vc3JjIHN5bmMgcmVjdXJzaXZlXCI7IiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgVGltZXIgfSBmcm9tICcuL1RpbWVyLmpzJztcblxuY29uc3QgRGVmYXVsdEFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lID0gNjA7IC8vIHNlY29uZHNcblxuZXhwb3J0IGNsYXNzIEFjY2Vzc1Rva2VuRXZlbnRzIHtcblxuICAgIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUgPSBEZWZhdWx0QWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUsXG4gICAgICAgIGFjY2Vzc1Rva2VuRXhwaXJpbmdUaW1lciA9IG5ldyBUaW1lcihcIkFjY2VzcyB0b2tlbiBleHBpcmluZ1wiKSxcbiAgICAgICAgYWNjZXNzVG9rZW5FeHBpcmVkVGltZXIgPSBuZXcgVGltZXIoXCJBY2Nlc3MgdG9rZW4gZXhwaXJlZFwiKVxuICAgIH0gPSB7fSkge1xuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IGFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lO1xuXG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmcgPSBhY2Nlc3NUb2tlbkV4cGlyaW5nVGltZXI7XG4gICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJlZCA9IGFjY2Vzc1Rva2VuRXhwaXJlZFRpbWVyO1xuICAgIH1cblxuICAgIGxvYWQoY29udGFpbmVyKSB7XG4gICAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZXZlbnRzIGlmIHRoZXJlJ3MgYW4gYWNjZXNzIHRva2VuIGFuZCBpdCBoYXMgYW4gZXhwaXJhdGlvblxuICAgICAgICBpZiAoY29udGFpbmVyLmFjY2Vzc190b2tlbiAmJiBjb250YWluZXIuZXhwaXJlc19pbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgZHVyYXRpb24gPSBjb250YWluZXIuZXhwaXJlc19pbjtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIkFjY2Vzc1Rva2VuRXZlbnRzLmxvYWQ6IGFjY2VzcyB0b2tlbiBwcmVzZW50LCByZW1haW5pbmcgZHVyYXRpb246XCIsIGR1cmF0aW9uKTtcblxuICAgICAgICAgICAgaWYgKGR1cmF0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZXhwaXJpbmcgaWYgd2Ugc3RpbGwgaGF2ZSB0aW1lXG4gICAgICAgICAgICAgICAgbGV0IGV4cGlyaW5nID0gZHVyYXRpb24gLSB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTtcbiAgICAgICAgICAgICAgICBpZiAoZXhwaXJpbmcgPD0gMCl7XG4gICAgICAgICAgICAgICAgICAgIGV4cGlyaW5nID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQWNjZXNzVG9rZW5FdmVudHMubG9hZDogcmVnaXN0ZXJpbmcgZXhwaXJpbmcgdGltZXIgaW46XCIsIGV4cGlyaW5nKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyaW5nLmluaXQoZXhwaXJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQWNjZXNzVG9rZW5FdmVudHMubG9hZDogY2FuY2VsaW5nIGV4aXN0aW5nIGV4cGlyaW5nIHRpbWVyIGJlY2FzZSB3ZSdyZSBwYXN0IGV4cGlyYXRpb24uXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJpbmcuY2FuY2VsKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGl0J3MgbmVnYXRpdmUsIGl0IHdpbGwgc3RpbGwgZmlyZVxuICAgICAgICAgICAgbGV0IGV4cGlyZWQgPSBkdXJhdGlvbiArIDE7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJBY2Nlc3NUb2tlbkV2ZW50cy5sb2FkOiByZWdpc3RlcmluZyBleHBpcmVkIHRpbWVyIGluOlwiLCBleHBpcmVkKTtcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJlZC5pbml0KGV4cGlyZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZy5jYW5jZWwoKTtcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuRXhwaXJlZC5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVubG9hZCgpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiQWNjZXNzVG9rZW5FdmVudHMudW5sb2FkOiBjYW5jZWxpbmcgZXhpc3RpbmcgYWNjZXNzIHRva2VuIHRpbWVyc1wiKTtcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZy5jYW5jZWwoKTtcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmVkLmNhbmNlbCgpO1xuICAgIH1cblxuICAgIGFkZEFjY2Vzc1Rva2VuRXhwaXJpbmcoY2IpIHtcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZy5hZGRIYW5kbGVyKGNiKTtcbiAgICB9XG4gICAgcmVtb3ZlQWNjZXNzVG9rZW5FeHBpcmluZyhjYikge1xuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyaW5nLnJlbW92ZUhhbmRsZXIoY2IpO1xuICAgIH1cblxuICAgIGFkZEFjY2Vzc1Rva2VuRXhwaXJlZChjYikge1xuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQuYWRkSGFuZGxlcihjYik7XG4gICAgfVxuICAgIHJlbW92ZUFjY2Vzc1Rva2VuRXhwaXJlZChjYikge1xuICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbkV4cGlyZWQucmVtb3ZlSGFuZGxlcihjYik7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuXG5jb25zdCBEZWZhdWx0SW50ZXJ2YWwgPSAyMDAwO1xuXG5leHBvcnQgY2xhc3MgQ2hlY2tTZXNzaW9uSUZyYW1lIHtcbiAgICBjb25zdHJ1Y3RvcihjYWxsYmFjaywgY2xpZW50X2lkLCB1cmwsIGludGVydmFsLCBzdG9wT25FcnJvciA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgdGhpcy5fY2xpZW50X2lkID0gY2xpZW50X2lkO1xuICAgICAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuX2ludGVydmFsID0gaW50ZXJ2YWwgfHwgRGVmYXVsdEludGVydmFsO1xuICAgICAgICB0aGlzLl9zdG9wT25FcnJvciA9IHN0b3BPbkVycm9yO1xuXG4gICAgICAgIHZhciBpZHggPSB1cmwuaW5kZXhPZihcIi9cIiwgdXJsLmluZGV4T2YoXCIvL1wiKSArIDIpO1xuICAgICAgICB0aGlzLl9mcmFtZV9vcmlnaW4gPSB1cmwuc3Vic3RyKDAsIGlkeCk7XG5cbiAgICAgICAgdGhpcy5fZnJhbWUgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcblxuICAgICAgICAvLyBzaG90Z3VuIGFwcHJvYWNoXG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgICB0aGlzLl9mcmFtZS5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgdGhpcy5fZnJhbWUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICB0aGlzLl9mcmFtZS5zdHlsZS53aWR0aCA9IDA7XG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLmhlaWdodCA9IDA7XG5cbiAgICAgICAgdGhpcy5fZnJhbWUuc3JjID0gdXJsO1xuICAgIH1cbiAgICBsb2FkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2ZyYW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2JvdW5kTWVzc2FnZUV2ZW50ID0gdGhpcy5fbWVzc2FnZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMuX2JvdW5kTWVzc2FnZUV2ZW50LCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfbWVzc2FnZShlKSB7XG4gICAgICAgIGlmIChlLm9yaWdpbiA9PT0gdGhpcy5fZnJhbWVfb3JpZ2luICYmXG4gICAgICAgICAgICBlLnNvdXJjZSA9PT0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvd1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChlLmRhdGEgPT09IFwiZXJyb3JcIikge1xuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkNoZWNrU2Vzc2lvbklGcmFtZTogZXJyb3IgbWVzc2FnZSBmcm9tIGNoZWNrIHNlc3Npb24gb3AgaWZyYW1lXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdG9wT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlLmRhdGEgPT09IFwiY2hhbmdlZFwiKSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lOiBjaGFuZ2VkIG1lc3NhZ2UgZnJvbSBjaGVjayBzZXNzaW9uIG9wIGlmcmFtZVwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lOiBcIiArIGUuZGF0YSArIFwiIG1lc3NhZ2UgZnJvbSBjaGVjayBzZXNzaW9uIG9wIGlmcmFtZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGFydChzZXNzaW9uX3N0YXRlKSB7XG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uX3N0YXRlICE9PSBzZXNzaW9uX3N0YXRlKSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJDaGVja1Nlc3Npb25JRnJhbWUuc3RhcnRcIik7XG5cbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uX3N0YXRlID0gc2Vzc2lvbl9zdGF0ZTtcblxuICAgICAgICAgICAgbGV0IHNlbmQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh0aGlzLl9jbGllbnRfaWQgKyBcIiBcIiArIHRoaXMuX3Nlc3Npb25fc3RhdGUsIHRoaXMuX2ZyYW1lX29yaWdpbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyB0cmlnZ2VyIG5vd1xuICAgICAgICAgICAgc2VuZCgpO1xuXG4gICAgICAgICAgICAvLyBhbmQgc2V0dXAgdGltZXJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gd2luZG93LnNldEludGVydmFsKHNlbmQsIHRoaXMuX2ludGVydmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3AoKSB7XG4gICAgICAgIHRoaXMuX3Nlc3Npb25fc3RhdGUgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl90aW1lcikge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiQ2hlY2tTZXNzaW9uSUZyYW1lLnN0b3BcIik7XG5cbiAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuX3RpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IENvcmRvdmFQb3B1cFdpbmRvdyB9IGZyb20gJy4vQ29yZG92YVBvcHVwV2luZG93LmpzJztcblxuZXhwb3J0IGNsYXNzIENvcmRvdmFJRnJhbWVOYXZpZ2F0b3Ige1xuXG4gICAgcHJlcGFyZShwYXJhbXMpIHtcbiAgICAgICAgcGFyYW1zLnBvcHVwV2luZG93RmVhdHVyZXMgPSAnaGlkZGVuPXllcyc7XG4gICAgICAgIGxldCBwb3B1cCA9IG5ldyBDb3Jkb3ZhUG9wdXBXaW5kb3cocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb3B1cCk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgQ29yZG92YVBvcHVwV2luZG93IH0gZnJvbSAnLi9Db3Jkb3ZhUG9wdXBXaW5kb3cuanMnO1xuXG5leHBvcnQgY2xhc3MgQ29yZG92YVBvcHVwTmF2aWdhdG9yIHtcblxuICAgIHByZXBhcmUocGFyYW1zKSB7XG4gICAgICAgIGxldCBwb3B1cCA9IG5ldyBDb3Jkb3ZhUG9wdXBXaW5kb3cocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb3B1cCk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuXG5jb25zdCBEZWZhdWx0UG9wdXBGZWF0dXJlcyA9ICdsb2NhdGlvbj1ubyx0b29sYmFyPW5vLHpvb209bm8nO1xuY29uc3QgRGVmYXVsdFBvcHVwVGFyZ2V0ID0gXCJfYmxhbmtcIjtcblxuZXhwb3J0IGNsYXNzIENvcmRvdmFQb3B1cFdpbmRvdyB7XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgdGhpcy5fcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgdGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZlYXR1cmVzID0gcGFyYW1zLnBvcHVwV2luZG93RmVhdHVyZXMgfHwgRGVmYXVsdFBvcHVwRmVhdHVyZXM7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gcGFyYW1zLnBvcHVwV2luZG93VGFyZ2V0IHx8IERlZmF1bHRQb3B1cFRhcmdldDtcbiAgICAgICAgXG4gICAgICAgIHRoaXMucmVkaXJlY3RfdXJpID0gcGFyYW1zLnN0YXJ0VXJsO1xuICAgICAgICBMb2cuZGVidWcoXCJDb3Jkb3ZhUG9wdXBXaW5kb3cuY3RvcjogcmVkaXJlY3RfdXJpOiBcIiArIHRoaXMucmVkaXJlY3RfdXJpKTtcbiAgICB9XG5cbiAgICBfaXNJbkFwcEJyb3dzZXJJbnN0YWxsZWQoY29yZG92YU1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiBbXCJjb3Jkb3ZhLXBsdWdpbi1pbmFwcGJyb3dzZXJcIiwgXCJjb3Jkb3ZhLXBsdWdpbi1pbmFwcGJyb3dzZXIuaW5hcHBicm93c2VyXCIsIFwib3JnLmFwYWNoZS5jb3Jkb3ZhLmluYXBwYnJvd3NlclwiXS5zb21lKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gY29yZG92YU1ldGFkYXRhLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIFxuICAgIG5hdmlnYXRlKHBhcmFtcykge1xuICAgICAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLnVybCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJObyB1cmwgcHJvdmlkZWRcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXdpbmRvdy5jb3Jkb3ZhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yKFwiY29yZG92YSBpcyB1bmRlZmluZWRcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdmFyIGNvcmRvdmFNZXRhZGF0YSA9IHdpbmRvdy5jb3Jkb3ZhLnJlcXVpcmUoXCJjb3Jkb3ZhL3BsdWdpbl9saXN0XCIpLm1ldGFkYXRhO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzSW5BcHBCcm93c2VySW5zdGFsbGVkKGNvcmRvdmFNZXRhZGF0YSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yKFwiSW5BcHBCcm93c2VyIHBsdWdpbiBub3QgZm91bmRcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3BvcHVwID0gY29yZG92YS5JbkFwcEJyb3dzZXIub3BlbihwYXJhbXMudXJsLCB0aGlzLnRhcmdldCwgdGhpcy5mZWF0dXJlcyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fcG9wdXApIHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJDb3Jkb3ZhUG9wdXBXaW5kb3cubmF2aWdhdGU6IHBvcHVwIHN1Y2Nlc3NmdWxseSBjcmVhdGVkXCIpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMuX2V4aXRDYWxsYmFja0V2ZW50ID0gdGhpcy5fZXhpdENhbGxiYWNrLmJpbmQodGhpcyk7IFxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRTdGFydENhbGxiYWNrRXZlbnQgPSB0aGlzLl9sb2FkU3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVwLmFkZEV2ZW50TGlzdGVuZXIoXCJleGl0XCIsIHRoaXMuX2V4aXRDYWxsYmFja0V2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRzdGFydFwiLCB0aGlzLl9sb2FkU3RhcnRDYWxsYmFja0V2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiRXJyb3Igb3BlbmluZyBwb3B1cCB3aW5kb3dcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZTtcbiAgICB9XG5cbiAgICBnZXQgcHJvbWlzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XG4gICAgfVxuXG4gICAgX2xvYWRTdGFydENhbGxiYWNrKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC51cmwuaW5kZXhPZih0aGlzLnJlZGlyZWN0X3VyaSkgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3N1Y2Nlc3MoeyB1cmw6IGV2ZW50LnVybCB9KTtcbiAgICAgICAgfSAgICBcbiAgICB9XG4gICAgX2V4aXRDYWxsYmFjayhtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKG1lc3NhZ2UpOyAgICBcbiAgICB9XG4gICAgXG4gICAgX3N1Y2Nlc3MoZGF0YSkge1xuICAgICAgICB0aGlzLl9jbGVhbnVwKCk7XG5cbiAgICAgICAgTG9nLmRlYnVnKFwiQ29yZG92YVBvcHVwV2luZG93OiBTdWNjZXNzZnVsIHJlc3BvbnNlIGZyb20gY29yZG92YSBwb3B1cCB3aW5kb3dcIik7XG4gICAgICAgIHRoaXMuX3Jlc29sdmUoZGF0YSk7XG4gICAgfVxuICAgIF9lcnJvcihtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcblxuICAgICAgICBMb2cuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuX3JlamVjdChuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLl9jbGVhbnVwKCk7XG4gICAgfVxuXG4gICAgX2NsZWFudXAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9wb3B1cCl7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJDb3Jkb3ZhUG9wdXBXaW5kb3c6IGNsZWFuaW5nIHVwIHBvcHVwXCIpO1xuICAgICAgICAgICAgdGhpcy5fcG9wdXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImV4aXRcIiwgdGhpcy5fZXhpdENhbGxiYWNrRXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2Fkc3RhcnRcIiwgdGhpcy5fbG9hZFN0YXJ0Q2FsbGJhY2tFdmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5fcG9wdXAuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3B1cCA9IG51bGw7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuXG5leHBvcnQgY2xhc3MgRXJyb3JSZXNwb25zZSBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcih7ZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uLCBlcnJvcl91cmksIHN0YXRlfT17fVxuICAgICkge1xuICAgICAgICAgaWYgKCFlcnJvcil7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJObyBlcnJvciBwYXNzZWQgdG8gRXJyb3JSZXNwb25zZVwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVycm9yXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIoZXJyb3JfZGVzY3JpcHRpb24gfHwgZXJyb3IpO1xuXG4gICAgICAgIHRoaXMubmFtZSA9IFwiRXJyb3JSZXNwb25zZVwiO1xuXG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5lcnJvcl9kZXNjcmlwdGlvbiA9IGVycm9yX2Rlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmVycm9yX3VyaSA9IGVycm9yX3VyaTtcblxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuXG5leHBvcnQgY2xhc3MgRXZlbnQge1xuXG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzID0gW107XG4gICAgfVxuXG4gICAgYWRkSGFuZGxlcihjYikge1xuICAgICAgICB0aGlzLl9jYWxsYmFja3MucHVzaChjYik7XG4gICAgfVxuXG4gICAgcmVtb3ZlSGFuZGxlcihjYikge1xuICAgICAgICB2YXIgaWR4ID0gdGhpcy5fY2FsbGJhY2tzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0gPT09IGNiKTtcbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxsYmFja3Muc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYWlzZSguLi5wYXJhbXMpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiRXZlbnQ6IFJhaXNpbmcgZXZlbnQ6IFwiICsgdGhpcy5fbmFtZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxsYmFja3NbaV0oLi4ucGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmNvbnN0IHRpbWVyID0ge1xuICAgIHNldEludGVydmFsOiBmdW5jdGlvbiAoY2IsIGR1cmF0aW9uKSB7XG4gICAgICAgIHJldHVybiBzZXRJbnRlcnZhbChjYiwgZHVyYXRpb24pO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbChoYW5kbGUpO1xuICAgIH1cbn07XG5cbmxldCB0ZXN0aW5nID0gZmFsc2U7XG5sZXQgcmVxdWVzdCA9IG51bGw7XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWwge1xuXG4gICAgc3RhdGljIF90ZXN0aW5nKCkge1xuICAgICAgICB0ZXN0aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGxvY2F0aW9uKCkge1xuICAgICAgICBpZiAoIXRlc3RpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgbG9jYWxTdG9yYWdlKCkge1xuICAgICAgICBpZiAoIXRlc3RpbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHNlc3Npb25TdG9yYWdlKCkge1xuICAgICAgICBpZiAoIXRlc3RpbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBzZXRYTUxIdHRwUmVxdWVzdChuZXdSZXF1ZXN0KSB7XG4gICAgICAgIHJlcXVlc3QgPSBuZXdSZXF1ZXN0O1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgWE1MSHR0cFJlcXVlc3QoKSB7XG4gICAgICAgIGlmICghdGVzdGluZyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QgfHwgWE1MSHR0cFJlcXVlc3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHRpbWVyKCkge1xuICAgICAgICBpZiAoIXRlc3RpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aW1lcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IElGcmFtZVdpbmRvdyB9IGZyb20gJy4vSUZyYW1lV2luZG93LmpzJztcblxuZXhwb3J0IGNsYXNzIElGcmFtZU5hdmlnYXRvciB7XG5cbiAgICBwcmVwYXJlKHBhcmFtcykge1xuICAgICAgICBsZXQgZnJhbWUgPSBuZXcgSUZyYW1lV2luZG93KHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZnJhbWUpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHVybCkge1xuICAgICAgICBMb2cuZGVidWcoXCJJRnJhbWVOYXZpZ2F0b3IuY2FsbGJhY2tcIik7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIElGcmFtZVdpbmRvdy5ub3RpZnlQYXJlbnQodXJsKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuXG5jb25zdCBEZWZhdWx0VGltZW91dCA9IDEwMDAwO1xuXG5leHBvcnQgY2xhc3MgSUZyYW1lV2luZG93IHtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGlzLl9yZWplY3QgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2JvdW5kTWVzc2FnZUV2ZW50ID0gdGhpcy5fbWVzc2FnZS5iaW5kKHRoaXMpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5fYm91bmRNZXNzYWdlRXZlbnQsIGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9mcmFtZSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO1xuXG4gICAgICAgIC8vIHNob3RndW4gYXBwcm9hY2hcbiAgICAgICAgdGhpcy5fZnJhbWUuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICB0aGlzLl9mcmFtZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIHRoaXMuX2ZyYW1lLnN0eWxlLndpZHRoID0gMDtcbiAgICAgICAgdGhpcy5fZnJhbWUuc3R5bGUuaGVpZ2h0ID0gMDtcblxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9mcmFtZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGUocGFyYW1zKSB7XG4gICAgICAgIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudXJsKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcihcIk5vIHVybCBwcm92aWRlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCB0aW1lb3V0ID0gcGFyYW1zLnNpbGVudFJlcXVlc3RUaW1lb3V0IHx8IERlZmF1bHRUaW1lb3V0O1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93Lm5hdmlnYXRlOiBVc2luZyB0aW1lb3V0IG9mOlwiLCB0aW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5fdGltZW91dC5iaW5kKHRoaXMpLCB0aW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lLnNyYyA9IHBhcmFtcy51cmw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlO1xuICAgIH1cblxuICAgIGdldCBwcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICB9XG5cbiAgICBfc3VjY2VzcyhkYXRhKSB7XG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcblxuICAgICAgICBMb2cuZGVidWcoXCJJRnJhbWVXaW5kb3c6IFN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBmcmFtZSB3aW5kb3dcIik7XG4gICAgICAgIHRoaXMuX3Jlc29sdmUoZGF0YSk7XG4gICAgfVxuICAgIF9lcnJvcihtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuX2NsZWFudXAoKTtcblxuICAgICAgICBMb2cuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuX3JlamVjdChuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLl9jbGVhbnVwKCk7XG4gICAgfVxuXG4gICAgX2NsZWFudXAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9mcmFtZSkge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93OiBjbGVhbnVwXCIpO1xuXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5fYm91bmRNZXNzYWdlRXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpO1xuXG4gICAgICAgICAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9ib3VuZE1lc3NhZ2VFdmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfdGltZW91dCgpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93LnRpbWVvdXRcIik7XG4gICAgICAgIHRoaXMuX2Vycm9yKFwiRnJhbWUgd2luZG93IHRpbWVkIG91dFwiKTtcbiAgICB9XG5cbiAgICBfbWVzc2FnZShlKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIklGcmFtZVdpbmRvdy5tZXNzYWdlXCIpO1xuXG4gICAgICAgIGlmICh0aGlzLl90aW1lciAmJlxuICAgICAgICAgICAgZS5vcmlnaW4gPT09IHRoaXMuX29yaWdpbiAmJlxuICAgICAgICAgICAgZS5zb3VyY2UgPT09IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBsZXQgdXJsID0gZS5kYXRhO1xuICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N1Y2Nlc3MoeyB1cmw6IHVybCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiSW52YWxpZCByZXNwb25zZSBmcm9tIGZyYW1lXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IF9vcmlnaW4oKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIGxvY2F0aW9uLmhvc3Q7XG4gICAgfVxuXG4gICAgc3RhdGljIG5vdGlmeVBhcmVudCh1cmwpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiSUZyYW1lV2luZG93Lm5vdGlmeVBhcmVudFwiKTtcbiAgICAgICAgaWYgKHdpbmRvdy5mcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHVybCA9IHVybCB8fCB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJJRnJhbWVXaW5kb3cubm90aWZ5UGFyZW50OiBwb3N0aW5nIHVybCBtZXNzYWdlIHRvIHBhcmVudFwiKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHVybCwgbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyBsb2NhdGlvbi5ob3N0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcblxuZXhwb3J0IGNsYXNzIEluTWVtb3J5V2ViU3RvcmFnZXtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICB0aGlzLl9kYXRhID0ge307XG4gICAgfVxuXG4gICAgZ2V0SXRlbShrZXkpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiSW5NZW1vcnlXZWJTdG9yYWdlLmdldEl0ZW1cIiwga2V5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFba2V5XTtcbiAgICB9XG5cbiAgICBzZXRJdGVtKGtleSwgdmFsdWUpe1xuICAgICAgICBMb2cuZGVidWcoXCJJbk1lbW9yeVdlYlN0b3JhZ2Uuc2V0SXRlbVwiLCBrZXkpO1xuICAgICAgICB0aGlzLl9kYXRhW2tleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZW1vdmVJdGVtKGtleSl7XG4gICAgICAgIExvZy5kZWJ1ZyhcIkluTWVtb3J5V2ViU3RvcmFnZS5yZW1vdmVJdGVtXCIsIGtleSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhW2tleV07XG4gICAgfVxuXG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX2RhdGEpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBrZXkoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX2RhdGEpW2luZGV4XTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBqd3MsIEtFWVVUSUwgYXMgS2V5VXRpbCwgWDUwOSwgY3J5cHRvLCBoZXh0b2I2NHUsIGI2NHRvaGV4IH0gZnJvbSAnLi4vanNyc2FzaWduL2Rpc3QvanNyc2FzaWduLmpzJztcbi8vaW1wb3J0IHsgandzLCBLRVlVVElMIGFzIEtleVV0aWwsIFg1MDksIGNyeXB0bywgaGV4dG9iNjR1LCBiNjR0b2hleCB9IGZyb20gJ2pzcnNhc2lnbic7XG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5cbmNvbnN0IEFsbG93ZWRTaWduaW5nQWxncyA9IFsnUlMyNTYnLCAnUlMzODQnLCAnUlM1MTInLCAnUFMyNTYnLCAnUFMzODQnLCAnUFM1MTInLCAnRVMyNTYnLCAnRVMzODQnLCAnRVM1MTInXTtcblxuZXhwb3J0IGNsYXNzIEpvc2VVdGlsIHtcblxuICAgIHN0YXRpYyBwYXJzZUp3dChqd3QpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiSm9zZVV0aWwucGFyc2VKd3RcIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgdG9rZW4gPSBqd3MuSldTLnBhcnNlKGp3dCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlYWRlcjogdG9rZW4uaGVhZGVyT2JqLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHRva2VuLnBheWxvYWRPYmpcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgTG9nLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHZhbGlkYXRlSnd0KGp3dCwga2V5LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXcsIG5vdykge1xuICAgICAgICBMb2cuZGVidWcoXCJKb3NlVXRpbC52YWxpZGF0ZUp3dFwiKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGtleS5rdHkgPT09IFwiUlNBXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LmUgJiYga2V5Lm4pIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gS2V5VXRpbC5nZXRLZXkoa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5Lng1YyAmJiBrZXkueDVjLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGV4ID0gYjY0dG9oZXgoa2V5Lng1Y1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGtleSA9IFg1MDkuZ2V0UHVibGljS2V5RnJvbUNlcnRIZXgoaGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLnZhbGlkYXRlSnd0OiBSU0Ega2V5IG1pc3Npbmcga2V5IG1hdGVyaWFsXCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJSU0Ega2V5IG1pc3Npbmcga2V5IG1hdGVyaWFsXCIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkua3R5ID09PSBcIkVDXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LmNydiAmJiBrZXkueCAmJiBrZXkueSkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBLZXlVdGlsLmdldEtleShrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwudmFsaWRhdGVKd3Q6IEVDIGtleSBtaXNzaW5nIGtleSBtYXRlcmlhbFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiRUMga2V5IG1pc3Npbmcga2V5IG1hdGVyaWFsXCIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC52YWxpZGF0ZUp3dDogVW5zdXBwb3J0ZWQga2V5IHR5cGVcIiwga2V5ICYmIGtleS5rdHkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBrZXkgdHlwZTogXCIgKyBrZXkgJiYga2V5Lmt0eSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gSm9zZVV0aWwuX3ZhbGlkYXRlSnd0KGp3dCwga2V5LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXcsIG5vdyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihlICYmIGUubWVzc2FnZSB8fCBlKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcIkpXVCB2YWxpZGF0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyB2YWxpZGF0ZUp3dEF0dHJpYnV0ZXMoand0LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXcsIG5vdykge1xuICAgICAgICBpZiAoIWNsb2NrU2tldykge1xuICAgICAgICAgICAgY2xvY2tTa2V3ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbm93KSB7XG4gICAgICAgICAgICBub3cgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGF5bG9hZCA9IEpvc2VVdGlsLnBhcnNlSnd0KGp3dCkucGF5bG9hZDtcblxuICAgICAgICBpZiAoIXBheWxvYWQuaXNzKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IGlzc3VlciB3YXMgbm90IHByb3ZpZGVkXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImlzc3VlciB3YXMgbm90IHByb3ZpZGVkXCIpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC5pc3MgIT09IGlzc3Vlcikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBJbnZhbGlkIGlzc3VlciBpbiB0b2tlblwiLCBwYXlsb2FkLmlzcyk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBpc3N1ZXIgaW4gdG9rZW46IFwiICsgcGF5bG9hZC5pc3MpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGF5bG9hZC5hdWQpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogYXVkIHdhcyBub3QgcHJvdmlkZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiYXVkIHdhcyBub3QgcHJvdmlkZWRcIikpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZEF1ZGllbmNlID0gcGF5bG9hZC5hdWQgPT09IGF1ZGllbmNlIHx8IChBcnJheS5pc0FycmF5KHBheWxvYWQuYXVkKSAmJiBwYXlsb2FkLmF1ZC5pbmRleE9mKGF1ZGllbmNlKSA+PSAwKTtcbiAgICAgICAgaWYgKCF2YWxpZEF1ZGllbmNlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IEludmFsaWQgYXVkaWVuY2UgaW4gdG9rZW5cIiwgcGF5bG9hZC5hdWQpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkludmFsaWQgYXVkaWVuY2UgaW4gdG9rZW46IFwiICsgcGF5bG9hZC5hdWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC5henAgJiYgcGF5bG9hZC5henAgIT09IGF1ZGllbmNlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IEludmFsaWQgYXpwIGluIHRva2VuXCIsIHBheWxvYWQuYXpwKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJJbnZhbGlkIGF6cCBpbiB0b2tlbjogXCIgKyBwYXlsb2FkLmF6cCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvd2VyTm93ID0gbm93ICsgY2xvY2tTa2V3O1xuICAgICAgICB2YXIgdXBwZXJOb3cgPSBub3cgLSBjbG9ja1NrZXc7XG5cbiAgICAgICAgaWYgKCFwYXlsb2FkLmlhdCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBpYXQgd2FzIG5vdCBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJpYXQgd2FzIG5vdCBwcm92aWRlZFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvd2VyTm93IDwgcGF5bG9hZC5pYXQpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogaWF0IGlzIGluIHRoZSBmdXR1cmVcIiwgcGF5bG9hZC5pYXQpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImlhdCBpcyBpbiB0aGUgZnV0dXJlOiBcIiArIHBheWxvYWQuaWF0KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF5bG9hZC5uYmYgJiYgbG93ZXJOb3cgPCBwYXlsb2FkLm5iZikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBuYmYgaXMgaW4gdGhlIGZ1dHVyZVwiLCBwYXlsb2FkLm5iZik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwibmJmIGlzIGluIHRoZSBmdXR1cmU6IFwiICsgcGF5bG9hZC5uYmYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGF5bG9hZC5leHApIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIkpvc2VVdGlsLl92YWxpZGF0ZUp3dDogZXhwIHdhcyBub3QgcHJvdmlkZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiZXhwIHdhcyBub3QgcHJvdmlkZWRcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXlsb2FkLmV4cCA8IHVwcGVyTm93KSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKb3NlVXRpbC5fdmFsaWRhdGVKd3Q6IGV4cCBpcyBpbiB0aGUgcGFzdFwiLCBwYXlsb2FkLmV4cCk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiZXhwIGlzIGluIHRoZSBwYXN0OlwiICsgcGF5bG9hZC5leHApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocGF5bG9hZCk7XG4gICAgfVxuXG4gICAgc3RhdGljIF92YWxpZGF0ZUp3dChqd3QsIGtleSwgaXNzdWVyLCBhdWRpZW5jZSwgY2xvY2tTa2V3LCBub3cpIHtcblxuICAgICAgICByZXR1cm4gSm9zZVV0aWwudmFsaWRhdGVKd3RBdHRyaWJ1dGVzKGp3dCwgaXNzdWVyLCBhdWRpZW5jZSwgY2xvY2tTa2V3LCBub3cpLnRoZW4ocGF5bG9hZCA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghandzLkpXUy52ZXJpZnkoand0LCBrZXksIEFsbG93ZWRTaWduaW5nQWxncykpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiSm9zZVV0aWwuX3ZhbGlkYXRlSnd0OiBzaWduYXR1cmUgdmFsaWRhdGlvbiBmYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJzaWduYXR1cmUgdmFsaWRhdGlvbiBmYWlsZWRcIikpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoZSAmJiBlLm1lc3NhZ2UgfHwgZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcInNpZ25hdHVyZSB2YWxpZGF0aW9uIGZhaWxlZFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBoYXNoU3RyaW5nKHZhbHVlLCBhbGcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjcnlwdG8uVXRpbC5oYXNoU3RyaW5nKHZhbHVlLCBhbGcpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgaGV4VG9CYXNlNjRVcmwodmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBoZXh0b2I2NHUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBKc29uU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoYWRkaXRpb25hbENvbnRlbnRUeXBlcyA9IG51bGwsIFhNTEh0dHBSZXF1ZXN0Q3RvciA9IEdsb2JhbC5YTUxIdHRwUmVxdWVzdCkge1xuICAgICAgICBpZiAoYWRkaXRpb25hbENvbnRlbnRUeXBlcyAmJiBBcnJheS5pc0FycmF5KGFkZGl0aW9uYWxDb250ZW50VHlwZXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50VHlwZXMgPSBhZGRpdGlvbmFsQ29udGVudFR5cGVzLnNsaWNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50VHlwZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb250ZW50VHlwZXMucHVzaCgnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgICAgIHRoaXMuX1hNTEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3RDdG9yO1xuICAgIH1cblxuICAgIGdldEpzb24odXJsLCB0b2tlbikge1xuICAgICAgICBpZiAoIXVybCl7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJKc29uU2VydmljZS5nZXRKc29uOiBObyB1cmwgcGFzc2VkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJsXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgTG9nLmRlYnVnKFwiSnNvblNlcnZpY2UuZ2V0SnNvbiwgdXJsOiBcIiwgdXJsKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAgICAgICB2YXIgcmVxID0gbmV3IHRoaXMuX1hNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICByZXEub3BlbignR0VUJywgdXJsKTtcblxuICAgICAgICAgICAgdmFyIGFsbG93ZWRDb250ZW50VHlwZXMgPSB0aGlzLl9jb250ZW50VHlwZXM7XG5cbiAgICAgICAgICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJKc29uU2VydmljZS5nZXRKc29uOiBIVFRQIHJlc3BvbnNlIHJlY2VpdmVkLCBzdGF0dXNcIiwgcmVxLnN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gYWxsb3dlZENvbnRlbnRUeXBlcy5maW5kKGl0ZW09PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUuc3RhcnRzV2l0aChpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKHJlcS5yZXNwb25zZVRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKc29uU2VydmljZS5nZXRKc29uOiBFcnJvciBwYXJzaW5nIEpTT04gcmVzcG9uc2VcIiwgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiSW52YWxpZCByZXNwb25zZSBDb250ZW50LVR5cGU6IFwiICsgY29udGVudFR5cGUgKyBcIiwgZnJvbSBVUkw6IFwiICsgdXJsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoRXJyb3IocmVxLnN0YXR1c1RleHQgKyBcIiAoXCIgKyByZXEuc3RhdHVzICsgXCIpXCIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLmdldEpzb246IG5ldHdvcmsgZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiTmV0d29yayBFcnJvclwiKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJKc29uU2VydmljZS5nZXRKc29uOiB0b2tlbiBwYXNzZWQsIHNldHRpbmcgQXV0aG9yaXphdGlvbiBoZWFkZXJcIik7XG4gICAgICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiICsgdG9rZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXEuc2VuZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0Rm9ybSh1cmwsIHBheWxvYWQpIHtcbiAgICAgICAgaWYgKCF1cmwpe1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiSnNvblNlcnZpY2UucG9zdEZvcm06IE5vIHVybCBwYXNzZWRcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmxcIik7XG4gICAgICAgIH1cblxuICAgICAgICBMb2cuZGVidWcoXCJKc29uU2VydmljZS5wb3N0Rm9ybSwgdXJsOiBcIiwgdXJsKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAgICAgICB2YXIgcmVxID0gbmV3IHRoaXMuX1hNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICByZXEub3BlbignUE9TVCcsIHVybCk7XG5cbiAgICAgICAgICAgIHZhciBhbGxvd2VkQ29udGVudFR5cGVzID0gdGhpcy5fY29udGVudFR5cGVzO1xuXG4gICAgICAgICAgICByZXEub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiSnNvblNlcnZpY2UucG9zdEZvcm06IEhUVFAgcmVzcG9uc2UgcmVjZWl2ZWQsIHN0YXR1c1wiLCByZXEuc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXEuc3RhdHVzID09PSAyMDApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudFR5cGUgPSByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBhbGxvd2VkQ29udGVudFR5cGVzLmZpbmQoaXRlbT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5zdGFydHNXaXRoKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UocmVxLnJlc3BvbnNlVGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLnBvc3RGb3JtOiBFcnJvciBwYXJzaW5nIEpTT04gcmVzcG9uc2VcIiwgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKFwiSW52YWxpZCByZXNwb25zZSBDb250ZW50LVR5cGU6IFwiICsgY29udGVudFR5cGUgKyBcIiwgZnJvbSBVUkw6IFwiICsgdXJsKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxLnN0YXR1cyA9PT0gNDAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gYWxsb3dlZENvbnRlbnRUeXBlcy5maW5kKGl0ZW09PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFR5cGUuc3RhcnRzV2l0aChpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSBKU09OLnBhcnNlKHJlcS5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJKc29uU2VydmljZS5wb3N0Rm9ybTogRXJyb3IgZnJvbSBzZXJ2ZXI6IFwiLCBwYXlsb2FkLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IocGF5bG9hZC5lcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLnBvc3RGb3JtOiBFcnJvciBwYXJzaW5nIEpTT04gcmVzcG9uc2VcIiwgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKHJlcS5zdGF0dXNUZXh0ICsgXCIgKFwiICsgcmVxLnN0YXR1cyArIFwiKVwiKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIkpzb25TZXJ2aWNlLnBvc3RGb3JtOiBuZXR3b3JrIGVycm9yXCIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChFcnJvcihcIk5ldHdvcmsgRXJyb3JcIikpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IGJvZHkgPSBcIlwiO1xuICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gcGF5bG9hZCkge1xuXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcGF5bG9hZFtrZXldO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSArPSBcIiZcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJvZHkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgKz0gXCI9XCI7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpO1xuICAgICAgICAgICAgcmVxLnNlbmQoYm9keSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmxldCBub3BMb2dnZXIgPSB7XG4gICAgZGVidWcoKXt9LFxuICAgIGluZm8oKXt9LFxuICAgIHdhcm4oKXt9LFxuICAgIGVycm9yKCl7fVxufTtcblxuY29uc3QgTk9ORSA9IDA7XG5jb25zdCBFUlJPUiA9IDE7XG5jb25zdCBXQVJOID0gMjtcbmNvbnN0IElORk8gPSAzO1xuY29uc3QgREVCVUcgPSA0O1xuXG5sZXQgbG9nZ2VyO1xubGV0IGxldmVsO1xuXG5leHBvcnQgY2xhc3MgTG9nIHtcbiAgICBzdGF0aWMgZ2V0IE5PTkUoKSB7cmV0dXJuIE5PTkV9O1xuICAgIHN0YXRpYyBnZXQgRVJST1IoKSB7cmV0dXJuIEVSUk9SfTtcbiAgICBzdGF0aWMgZ2V0IFdBUk4oKSB7cmV0dXJuIFdBUk59O1xuICAgIHN0YXRpYyBnZXQgSU5GTygpIHtyZXR1cm4gSU5GT307XG4gICAgc3RhdGljIGdldCBERUJVRygpIHtyZXR1cm4gREVCVUd9O1xuICAgIFxuICAgIHN0YXRpYyByZXNldCgpe1xuICAgICAgICBsZXZlbCA9IElORk87XG4gICAgICAgIGxvZ2dlciA9IG5vcExvZ2dlcjtcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGdldCBsZXZlbCgpe1xuICAgICAgICByZXR1cm4gbGV2ZWw7XG4gICAgfVxuICAgIHN0YXRpYyBzZXQgbGV2ZWwodmFsdWUpe1xuICAgICAgICBpZiAoTk9ORSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBERUJVRyl7XG4gICAgICAgICAgICBsZXZlbCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBsb2cgbGV2ZWxcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGdldCBsb2dnZXIoKXtcbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG4gICAgc3RhdGljIHNldCBsb2dnZXIodmFsdWUpe1xuICAgICAgICBpZiAoIXZhbHVlLmRlYnVnICYmIHZhbHVlLmluZm8pIHtcbiAgICAgICAgICAgIC8vIGp1c3QgdG8gc3RheSBiYWNrd2FyZHMgY29tcGF0LiBjYW4gcmVtb3ZlIGluIDIuMFxuICAgICAgICAgICAgdmFsdWUuZGVidWcgPSB2YWx1ZS5pbmZvO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmRlYnVnICYmIHZhbHVlLmluZm8gJiYgdmFsdWUud2FybiAmJiB2YWx1ZS5lcnJvcil7XG4gICAgICAgICAgICBsb2dnZXIgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbG9nZ2VyXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyBkZWJ1ZyguLi5hcmdzKXtcbiAgICAgICAgaWYgKGxldmVsID49IERFQlVHKXtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zy5hcHBseShsb2dnZXIsIEFycmF5LmZyb20oYXJncykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBpbmZvKC4uLmFyZ3Mpe1xuICAgICAgICBpZiAobGV2ZWwgPj0gSU5GTyl7XG4gICAgICAgICAgICBsb2dnZXIuaW5mby5hcHBseShsb2dnZXIsIEFycmF5LmZyb20oYXJncykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyB3YXJuKC4uLmFyZ3Mpe1xuICAgICAgICBpZiAobGV2ZWwgPj0gV0FSTil7XG4gICAgICAgICAgICBsb2dnZXIud2Fybi5hcHBseShsb2dnZXIsIEFycmF5LmZyb20oYXJncykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBlcnJvciguLi5hcmdzKXtcbiAgICAgICAgaWYgKGxldmVsID49IEVSUk9SKXtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvci5hcHBseShsb2dnZXIsIEFycmF5LmZyb20oYXJncykpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5Mb2cucmVzZXQoKTtcbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IEpzb25TZXJ2aWNlIH0gZnJvbSAnLi9Kc29uU2VydmljZS5qcyc7XG5cbmNvbnN0IE9pZGNNZXRhZGF0YVVybFBhdGggPSAnLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncywgSnNvblNlcnZpY2VDdG9yID0gSnNvblNlcnZpY2UpIHtcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiTWV0YWRhdGFTZXJ2aWNlOiBObyBzZXR0aW5ncyBwYXNzZWQgdG8gTWV0YWRhdGFTZXJ2aWNlXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0dGluZ3NcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLl9qc29uU2VydmljZSA9IG5ldyBKc29uU2VydmljZUN0b3IoWydhcHBsaWNhdGlvbi9qd2stc2V0K2pzb24nXSk7XG4gICAgfVxuXG4gICAgZ2V0IG1ldGFkYXRhVXJsKCkge1xuICAgICAgICBpZiAoIXRoaXMuX21ldGFkYXRhVXJsKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MubWV0YWRhdGFVcmwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCA9IHRoaXMuX3NldHRpbmdzLm1ldGFkYXRhVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWV0YWRhdGFVcmwgPSB0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWV0YWRhdGFVcmwgJiYgdGhpcy5fbWV0YWRhdGFVcmwuaW5kZXhPZihPaWRjTWV0YWRhdGFVcmxQYXRoKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21ldGFkYXRhVXJsW3RoaXMuX21ldGFkYXRhVXJsLmxlbmd0aCAtIDFdICE9PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21ldGFkYXRhVXJsICs9ICcvJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCArPSBPaWRjTWV0YWRhdGFVcmxQYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVVybDtcbiAgICB9XG5cbiAgICBnZXRNZXRhZGF0YSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLm1ldGFkYXRhKSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGE6IFJldHVybmluZyBtZXRhZGF0YSBmcm9tIHNldHRpbmdzXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5tZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubWV0YWRhdGFVcmwpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YTogTm8gYXV0aG9yaXR5IG9yIG1ldGFkYXRhVXJsIGNvbmZpZ3VyZWQgb24gc2V0dGluZ3NcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gYXV0aG9yaXR5IG9yIG1ldGFkYXRhVXJsIGNvbmZpZ3VyZWQgb24gc2V0dGluZ3NcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgTG9nLmRlYnVnKFwiTWV0YWRhdGFTZXJ2aWNlLmdldE1ldGFkYXRhOiBnZXR0aW5nIG1ldGFkYXRhIGZyb21cIiwgdGhpcy5tZXRhZGF0YVVybCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLmdldEpzb24odGhpcy5tZXRhZGF0YVVybClcbiAgICAgICAgICAgIC50aGVuKG1ldGFkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0TWV0YWRhdGE6IGpzb24gcmVjZWl2ZWRcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3MubWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJc3N1ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwiaXNzdWVyXCIpO1xuICAgIH1cblxuICAgIGdldEF1dGhvcml6YXRpb25FbmRwb2ludCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE1ldGFkYXRhUHJvcGVydHkoXCJhdXRob3JpemF0aW9uX2VuZHBvaW50XCIpO1xuICAgIH1cblxuICAgIGdldFVzZXJJbmZvRW5kcG9pbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwidXNlcmluZm9fZW5kcG9pbnRcIik7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW5FbmRwb2ludChvcHRpb25hbD10cnVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwidG9rZW5fZW5kcG9pbnRcIiwgb3B0aW9uYWwpO1xuICAgIH1cblxuICAgIGdldENoZWNrU2Vzc2lvbklmcmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE1ldGFkYXRhUHJvcGVydHkoXCJjaGVja19zZXNzaW9uX2lmcmFtZVwiLCB0cnVlKTtcbiAgICB9XG5cbiAgICBnZXRFbmRTZXNzaW9uRW5kcG9pbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRhZGF0YVByb3BlcnR5KFwiZW5kX3Nlc3Npb25fZW5kcG9pbnRcIiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0UmV2b2NhdGlvbkVuZHBvaW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcInJldm9jYXRpb25fZW5kcG9pbnRcIiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0S2V5c0VuZHBvaW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWV0YWRhdGFQcm9wZXJ0eShcImp3a3NfdXJpXCIsIHRydWUpO1xuICAgIH1cblxuICAgIF9nZXRNZXRhZGF0YVByb3BlcnR5KG5hbWUsIG9wdGlvbmFsPWZhbHNlKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YVByb3BlcnR5IGZvcjogXCIgKyBuYW1lKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXRhZGF0YSgpLnRoZW4obWV0YWRhdGEgPT4ge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiTWV0YWRhdGFTZXJ2aWNlLmdldE1ldGFkYXRhUHJvcGVydHk6IG1ldGFkYXRhIHJlY2lldmVkXCIpO1xuXG4gICAgICAgICAgICBpZiAobWV0YWRhdGFbbmFtZV0gPT09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbmFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiTWV0YWRhdGFTZXJ2aWNlLmdldE1ldGFkYXRhUHJvcGVydHk6IE1ldGFkYXRhIGRvZXMgbm90IGNvbnRhaW4gb3B0aW9uYWwgcHJvcGVydHkgXCIgKyBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIk1ldGFkYXRhU2VydmljZS5nZXRNZXRhZGF0YVByb3BlcnR5OiBNZXRhZGF0YSBkb2VzIG5vdCBjb250YWluIHByb3BlcnR5IFwiICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGFkYXRhIGRvZXMgbm90IGNvbnRhaW4gcHJvcGVydHkgXCIgKyBuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YVtuYW1lXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U2lnbmluZ0tleXMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zaWduaW5nS2V5cykge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiTWV0YWRhdGFTZXJ2aWNlLmdldFNpZ25pbmdLZXlzOiBSZXR1cm5pbmcgc2lnbmluZ0tleXMgZnJvbSBzZXR0aW5nc1wiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fc2V0dGluZ3Muc2lnbmluZ0tleXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE1ldGFkYXRhUHJvcGVydHkoXCJqd2tzX3VyaVwiKS50aGVuKGp3a3NfdXJpID0+IHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRTaWduaW5nS2V5czogandrc191cmkgcmVjZWl2ZWRcIiwgandrc191cmkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fanNvblNlcnZpY2UuZ2V0SnNvbihqd2tzX3VyaSkudGhlbihrZXlTZXQgPT4ge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk1ldGFkYXRhU2VydmljZS5nZXRTaWduaW5nS2V5czoga2V5IHNldCByZWNlaXZlZFwiLCBrZXlTZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFrZXlTZXQua2V5cykge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJNZXRhZGF0YVNlcnZpY2UuZ2V0U2lnbmluZ0tleXM6IE1pc3Npbmcga2V5cyBvbiBrZXlzZXRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3Npbmcga2V5cyBvbiBrZXlzZXRcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc2lnbmluZ0tleXMgPSBrZXlTZXQua2V5cztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Muc2lnbmluZ0tleXM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgT2lkY0NsaWVudFNldHRpbmdzIH0gZnJvbSAnLi9PaWRjQ2xpZW50U2V0dGluZ3MuanMnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4vRXJyb3JSZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBTaWduaW5SZXF1ZXN0IH0gZnJvbSAnLi9TaWduaW5SZXF1ZXN0LmpzJztcbmltcG9ydCB7IFNpZ25pblJlc3BvbnNlIH0gZnJvbSAnLi9TaWduaW5SZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBTaWdub3V0UmVxdWVzdCB9IGZyb20gJy4vU2lnbm91dFJlcXVlc3QuanMnO1xuaW1wb3J0IHsgU2lnbm91dFJlc3BvbnNlIH0gZnJvbSAnLi9TaWdub3V0UmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgU2lnbmluU3RhdGUgfSBmcm9tICcuL1NpZ25pblN0YXRlLmpzJztcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi9TdGF0ZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBPaWRjQ2xpZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncyA9IHt9KSB7XG4gICAgICAgIGlmIChzZXR0aW5ncyBpbnN0YW5jZW9mIE9pZGNDbGllbnRTZXR0aW5ncykge1xuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzID0gbmV3IE9pZGNDbGllbnRTZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgX3N0YXRlU3RvcmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnN0YXRlU3RvcmU7XG4gICAgfVxuICAgIGdldCBfdmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy52YWxpZGF0b3I7XG4gICAgfVxuICAgIGdldCBfbWV0YWRhdGFTZXJ2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5tZXRhZGF0YVNlcnZpY2U7XG4gICAgfVxuXG4gICAgZ2V0IHNldHRpbmdzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XG4gICAgfVxuICAgIGdldCBtZXRhZGF0YVNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2U7XG4gICAgfVxuXG4gICAgY3JlYXRlU2lnbmluUmVxdWVzdCh7XG4gICAgICAgIHJlc3BvbnNlX3R5cGUsIHNjb3BlLCByZWRpcmVjdF91cmksXG4gICAgICAgIC8vIGRhdGEgd2FzIG1lYW50IHRvIGJlIHRoZSBwbGFjZSBhIGNhbGxlciBjb3VsZCBpbmRpY2F0ZSB0aGUgZGF0YSB0b1xuICAgICAgICAvLyBoYXZlIHJvdW5kIHRyaXBwZWQsIGJ1dCBwZW9wbGUgd2VyZSBnZXR0aW5nIGNvbmZ1c2VkLCBzbyBpIGFkZGVkIHN0YXRlIChzaW5jZSB0aGF0IG1hdGNoZXMgdGhlIHNwZWMpXG4gICAgICAgIC8vIGFuZCBzbyBub3cgaWYgZGF0YSBpcyBub3QgcGFzc2VkLCBidXQgc3RhdGUgaXMgdGhlbiBzdGF0ZSB3aWxsIGJlIHVzZWRcbiAgICAgICAgZGF0YSwgc3RhdGUsIHByb21wdCwgZGlzcGxheSwgbWF4X2FnZSwgdWlfbG9jYWxlcywgaWRfdG9rZW5faGludCwgbG9naW5faGludCwgYWNyX3ZhbHVlcyxcbiAgICAgICAgcmVzb3VyY2UsIHJlcXVlc3QsIHJlcXVlc3RfdXJpLCByZXNwb25zZV9tb2RlLCBleHRyYVF1ZXJ5UGFyYW1zIH0gPSB7fSxcbiAgICAgICAgc3RhdGVTdG9yZVxuICAgICkge1xuICAgICAgICBMb2cuZGVidWcoXCJPaWRjQ2xpZW50LmNyZWF0ZVNpZ25pblJlcXVlc3RcIik7XG5cbiAgICAgICAgbGV0IGNsaWVudF9pZCA9IHRoaXMuX3NldHRpbmdzLmNsaWVudF9pZDtcbiAgICAgICAgcmVzcG9uc2VfdHlwZSA9IHJlc3BvbnNlX3R5cGUgfHwgdGhpcy5fc2V0dGluZ3MucmVzcG9uc2VfdHlwZTtcbiAgICAgICAgc2NvcGUgPSBzY29wZSB8fCB0aGlzLl9zZXR0aW5ncy5zY29wZTtcbiAgICAgICAgcmVkaXJlY3RfdXJpID0gcmVkaXJlY3RfdXJpIHx8IHRoaXMuX3NldHRpbmdzLnJlZGlyZWN0X3VyaTtcblxuICAgICAgICAvLyBpZF90b2tlbl9oaW50LCBsb2dpbl9oaW50IGFyZW4ndCBhbGxvd2VkIG9uIF9zZXR0aW5nc1xuICAgICAgICBwcm9tcHQgPSBwcm9tcHQgfHwgdGhpcy5fc2V0dGluZ3MucHJvbXB0O1xuICAgICAgICBkaXNwbGF5ID0gZGlzcGxheSB8fCB0aGlzLl9zZXR0aW5ncy5kaXNwbGF5O1xuICAgICAgICBtYXhfYWdlID0gbWF4X2FnZSB8fCB0aGlzLl9zZXR0aW5ncy5tYXhfYWdlO1xuICAgICAgICB1aV9sb2NhbGVzID0gdWlfbG9jYWxlcyB8fCB0aGlzLl9zZXR0aW5ncy51aV9sb2NhbGVzO1xuICAgICAgICBhY3JfdmFsdWVzID0gYWNyX3ZhbHVlcyB8fCB0aGlzLl9zZXR0aW5ncy5hY3JfdmFsdWVzO1xuICAgICAgICByZXNvdXJjZSA9IHJlc291cmNlIHx8IHRoaXMuX3NldHRpbmdzLnJlc291cmNlO1xuICAgICAgICByZXNwb25zZV9tb2RlID0gcmVzcG9uc2VfbW9kZSB8fCB0aGlzLl9zZXR0aW5ncy5yZXNwb25zZV9tb2RlO1xuICAgICAgICBleHRyYVF1ZXJ5UGFyYW1zID0gZXh0cmFRdWVyeVBhcmFtcyB8fCB0aGlzLl9zZXR0aW5ncy5leHRyYVF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIGxldCBhdXRob3JpdHkgPSB0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHk7XG5cbiAgICAgICAgaWYgKFNpZ25pblJlcXVlc3QuaXNDb2RlKHJlc3BvbnNlX3R5cGUpICYmIHJlc3BvbnNlX3R5cGUgIT09IFwiY29kZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiT3BlbklEIENvbm5lY3QgaHlicmlkIGZsb3cgaXMgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25FbmRwb2ludCgpLnRoZW4odXJsID0+IHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQuY3JlYXRlU2lnbmluUmVxdWVzdDogUmVjZWl2ZWQgYXV0aG9yaXphdGlvbiBlbmRwb2ludFwiLCB1cmwpO1xuXG4gICAgICAgICAgICBsZXQgc2lnbmluUmVxdWVzdCA9IG5ldyBTaWduaW5SZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgY2xpZW50X2lkLFxuICAgICAgICAgICAgICAgIHJlZGlyZWN0X3VyaSxcbiAgICAgICAgICAgICAgICByZXNwb25zZV90eXBlLFxuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEgfHwgc3RhdGUsXG4gICAgICAgICAgICAgICAgYXV0aG9yaXR5LFxuICAgICAgICAgICAgICAgIHByb21wdCwgZGlzcGxheSwgbWF4X2FnZSwgdWlfbG9jYWxlcywgaWRfdG9rZW5faGludCwgbG9naW5faGludCwgYWNyX3ZhbHVlcyxcbiAgICAgICAgICAgICAgICByZXNvdXJjZSwgcmVxdWVzdCwgcmVxdWVzdF91cmksIGV4dHJhUXVlcnlQYXJhbXMsIHJlc3BvbnNlX21vZGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB2YXIgc2lnbmluU3RhdGUgPSBzaWduaW5SZXF1ZXN0LnN0YXRlO1xuICAgICAgICAgICAgc3RhdGVTdG9yZSA9IHN0YXRlU3RvcmUgfHwgdGhpcy5fc3RhdGVTdG9yZTtcblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlU3RvcmUuc2V0KHNpZ25pblN0YXRlLmlkLCBzaWduaW5TdGF0ZS50b1N0b3JhZ2VTdHJpbmcoKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25pblJlcXVlc3Q7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1NpZ25pblJlc3BvbnNlKHVybCwgc3RhdGVTdG9yZSkge1xuICAgICAgICBMb2cuZGVidWcoXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWduaW5SZXNwb25zZVwiKTtcblxuICAgICAgICBsZXQgdXNlUXVlcnkgPSB0aGlzLl9zZXR0aW5ncy5yZXNwb25zZV9tb2RlID09PSBcInF1ZXJ5XCIgfHwgXG4gICAgICAgICAgICAoIXRoaXMuX3NldHRpbmdzLnJlc3BvbnNlX21vZGUgJiYgU2lnbmluUmVxdWVzdC5pc0NvZGUodGhpcy5fc2V0dGluZ3MucmVzcG9uc2VfdHlwZSkpO1xuICAgICAgICBsZXQgZGVsaW1pdGVyID0gdXNlUXVlcnkgPyBcIj9cIiA6IFwiI1wiO1xuXG4gICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBTaWduaW5SZXNwb25zZSh1cmwsIGRlbGltaXRlcik7XG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5zdGF0ZSkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbmluUmVzcG9uc2U6IE5vIHN0YXRlIGluIHJlc3BvbnNlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHN0YXRlIGluIHJlc3BvbnNlXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlU3RvcmUucmVtb3ZlKHJlc3BvbnNlLnN0YXRlKS50aGVuKHN0b3JlZFN0YXRlU3RyaW5nID0+IHtcbiAgICAgICAgICAgIGlmICghc3RvcmVkU3RhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWduaW5SZXNwb25zZTogTm8gbWF0Y2hpbmcgc3RhdGUgZm91bmQgaW4gc3RvcmFnZVwiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBtYXRjaGluZyBzdGF0ZSBmb3VuZCBpbiBzdG9yYWdlXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBTaWduaW5TdGF0ZS5mcm9tU3RvcmFnZVN0cmluZyhzdG9yZWRTdGF0ZVN0cmluZyk7XG5cbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQucHJvY2Vzc1NpZ25pblJlc3BvbnNlOiBSZWNlaXZlZCBzdGF0ZSBmcm9tIHN0b3JhZ2U7IHZhbGlkYXRpbmcgcmVzcG9uc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlU2lnbmluUmVzcG9uc2Uoc3RhdGUsIHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2lnbm91dFJlcXVlc3Qoe2lkX3Rva2VuX2hpbnQsIGRhdGEsIHN0YXRlLCBwb3N0X2xvZ291dF9yZWRpcmVjdF91cml9ID0ge30sXG4gICAgICAgIHN0YXRlU3RvcmVcbiAgICApIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5jcmVhdGVTaWdub3V0UmVxdWVzdFwiKTtcblxuICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgPSBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5fc2V0dGluZ3MucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0RW5kU2Vzc2lvbkVuZHBvaW50KCkudGhlbih1cmwgPT4ge1xuICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJPaWRjQ2xpZW50LmNyZWF0ZVNpZ25vdXRSZXF1ZXN0OiBObyBlbmQgc2Vzc2lvbiBlbmRwb2ludCB1cmwgcmV0dXJuZWRcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm8gZW5kIHNlc3Npb24gZW5kcG9pbnRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQuY3JlYXRlU2lnbm91dFJlcXVlc3Q6IFJlY2VpdmVkIGVuZCBzZXNzaW9uIGVuZHBvaW50XCIsIHVybCk7XG5cbiAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFNpZ25vdXRSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgaWRfdG9rZW5faGludCxcbiAgICAgICAgICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmksXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSB8fCBzdGF0ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHZhciBzaWdub3V0U3RhdGUgPSByZXF1ZXN0LnN0YXRlO1xuICAgICAgICAgICAgaWYgKHNpZ25vdXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQuY3JlYXRlU2lnbm91dFJlcXVlc3Q6IFNpZ25vdXQgcmVxdWVzdCBoYXMgc3RhdGUgdG8gcGVyc2lzdFwiKTtcblxuICAgICAgICAgICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XG4gICAgICAgICAgICAgICAgc3RhdGVTdG9yZS5zZXQoc2lnbm91dFN0YXRlLmlkLCBzaWdub3V0U3RhdGUudG9TdG9yYWdlU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1NpZ25vdXRSZXNwb25zZSh1cmwsIHN0YXRlU3RvcmUpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbm91dFJlc3BvbnNlXCIpO1xuXG4gICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBTaWdub3V0UmVzcG9uc2UodXJsKTtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5zdGF0ZSkge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbm91dFJlc3BvbnNlOiBObyBzdGF0ZSBpbiByZXNwb25zZVwiKTtcblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgTG9nLndhcm4oXCJPaWRjQ2xpZW50LnByb2Nlc3NTaWdub3V0UmVzcG9uc2U6IFJlc3BvbnNlIHdhcyBlcnJvcjogXCIsIHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhdGVLZXkgPSByZXNwb25zZS5zdGF0ZTtcblxuICAgICAgICBzdGF0ZVN0b3JlID0gc3RhdGVTdG9yZSB8fCB0aGlzLl9zdGF0ZVN0b3JlO1xuXG4gICAgICAgIHJldHVybiBzdGF0ZVN0b3JlLnJlbW92ZShzdGF0ZUtleSkudGhlbihzdG9yZWRTdGF0ZVN0cmluZyA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0b3JlZFN0YXRlU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbm91dFJlc3BvbnNlOiBObyBtYXRjaGluZyBzdGF0ZSBmb3VuZCBpbiBzdG9yYWdlXCIpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1hdGNoaW5nIHN0YXRlIGZvdW5kIGluIHN0b3JhZ2VcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IFN0YXRlLmZyb21TdG9yYWdlU3RyaW5nKHN0b3JlZFN0YXRlU3RyaW5nKTtcblxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiT2lkY0NsaWVudC5wcm9jZXNzU2lnbm91dFJlc3BvbnNlOiBSZWNlaXZlZCBzdGF0ZSBmcm9tIHN0b3JhZ2U7IHZhbGlkYXRpbmcgcmVzcG9uc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlU2lnbm91dFJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyU3RhbGVTdGF0ZShzdGF0ZVN0b3JlKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIk9pZGNDbGllbnQuY2xlYXJTdGFsZVN0YXRlXCIpO1xuXG4gICAgICAgIHN0YXRlU3RvcmUgPSBzdGF0ZVN0b3JlIHx8IHRoaXMuX3N0YXRlU3RvcmU7XG5cbiAgICAgICAgcmV0dXJuIFN0YXRlLmNsZWFyU3RhbGVTdGF0ZShzdGF0ZVN0b3JlLCB0aGlzLnNldHRpbmdzLnN0YWxlU3RhdGVBZ2UpO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9XZWJTdG9yYWdlU3RhdGVTdG9yZS5qcyc7XG5pbXBvcnQgeyBSZXNwb25zZVZhbGlkYXRvciB9IGZyb20gJy4vUmVzcG9uc2VWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9NZXRhZGF0YVNlcnZpY2UuanMnO1xuXG5jb25zdCBPaWRjTWV0YWRhdGFVcmxQYXRoID0gJy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uJztcblxuY29uc3QgRGVmYXVsdFJlc3BvbnNlVHlwZSA9IFwiaWRfdG9rZW5cIjtcbmNvbnN0IERlZmF1bHRTY29wZSA9IFwib3BlbmlkXCI7XG5jb25zdCBEZWZhdWx0U3RhbGVTdGF0ZUFnZSA9IDYwICogMTU7IC8vIHNlY29uZHNcbmNvbnN0IERlZmF1bHRDbG9ja1NrZXdJblNlY29uZHMgPSA2MCAqIDU7XG5cbmV4cG9ydCBjbGFzcyBPaWRjQ2xpZW50U2V0dGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgLy8gbWV0YWRhdGEgcmVsYXRlZFxuICAgICAgICBhdXRob3JpdHksIG1ldGFkYXRhVXJsLCBtZXRhZGF0YSwgc2lnbmluZ0tleXMsXG4gICAgICAgIC8vIGNsaWVudCByZWxhdGVkXG4gICAgICAgIGNsaWVudF9pZCwgY2xpZW50X3NlY3JldCwgcmVzcG9uc2VfdHlwZSA9IERlZmF1bHRSZXNwb25zZVR5cGUsIHNjb3BlID0gRGVmYXVsdFNjb3BlLFxuICAgICAgICByZWRpcmVjdF91cmksIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSxcbiAgICAgICAgLy8gb3B0aW9uYWwgcHJvdG9jb2xcbiAgICAgICAgcHJvbXB0LCBkaXNwbGF5LCBtYXhfYWdlLCB1aV9sb2NhbGVzLCBhY3JfdmFsdWVzLCByZXNvdXJjZSwgcmVzcG9uc2VfbW9kZSxcbiAgICAgICAgLy8gYmVoYXZpb3IgZmxhZ3NcbiAgICAgICAgZmlsdGVyUHJvdG9jb2xDbGFpbXMgPSB0cnVlLCBsb2FkVXNlckluZm8gPSB0cnVlLFxuICAgICAgICBzdGFsZVN0YXRlQWdlID0gRGVmYXVsdFN0YWxlU3RhdGVBZ2UsIGNsb2NrU2tldyA9IERlZmF1bHRDbG9ja1NrZXdJblNlY29uZHMsXG4gICAgICAgIC8vIG90aGVyIGJlaGF2aW9yXG4gICAgICAgIHN0YXRlU3RvcmUgPSBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoKSxcbiAgICAgICAgUmVzcG9uc2VWYWxpZGF0b3JDdG9yID0gUmVzcG9uc2VWYWxpZGF0b3IsXG4gICAgICAgIE1ldGFkYXRhU2VydmljZUN0b3IgPSBNZXRhZGF0YVNlcnZpY2UsXG4gICAgICAgIC8vIGV4dHJhIHF1ZXJ5IHBhcmFtc1xuICAgICAgICBleHRyYVF1ZXJ5UGFyYW1zID0ge31cbiAgICB9ID0ge30pIHtcblxuICAgICAgICB0aGlzLl9hdXRob3JpdHkgPSBhdXRob3JpdHk7XG4gICAgICAgIHRoaXMuX21ldGFkYXRhVXJsID0gbWV0YWRhdGFVcmw7XG4gICAgICAgIHRoaXMuX21ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gc2lnbmluZ0tleXM7XG5cbiAgICAgICAgdGhpcy5fY2xpZW50X2lkID0gY2xpZW50X2lkO1xuICAgICAgICB0aGlzLl9jbGllbnRfc2VjcmV0ID0gY2xpZW50X3NlY3JldDtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2VfdHlwZSA9IHJlc3BvbnNlX3R5cGU7XG4gICAgICAgIHRoaXMuX3Njb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMuX3JlZGlyZWN0X3VyaSA9IHJlZGlyZWN0X3VyaTtcbiAgICAgICAgdGhpcy5fcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpID0gcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpO1xuXG4gICAgICAgIHRoaXMuX3Byb21wdCA9IHByb21wdDtcbiAgICAgICAgdGhpcy5fZGlzcGxheSA9IGRpc3BsYXk7XG4gICAgICAgIHRoaXMuX21heF9hZ2UgPSBtYXhfYWdlO1xuICAgICAgICB0aGlzLl91aV9sb2NhbGVzID0gdWlfbG9jYWxlcztcbiAgICAgICAgdGhpcy5fYWNyX3ZhbHVlcyA9IGFjcl92YWx1ZXM7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlX21vZGUgPSByZXNwb25zZV9tb2RlO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlclByb3RvY29sQ2xhaW1zID0gISFmaWx0ZXJQcm90b2NvbENsYWltcztcbiAgICAgICAgdGhpcy5fbG9hZFVzZXJJbmZvID0gISFsb2FkVXNlckluZm87XG4gICAgICAgIHRoaXMuX3N0YWxlU3RhdGVBZ2UgPSBzdGFsZVN0YXRlQWdlO1xuICAgICAgICB0aGlzLl9jbG9ja1NrZXcgPSBjbG9ja1NrZXc7XG5cbiAgICAgICAgdGhpcy5fc3RhdGVTdG9yZSA9IHN0YXRlU3RvcmU7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvciA9IG5ldyBSZXNwb25zZVZhbGlkYXRvckN0b3IodGhpcyk7XG4gICAgICAgIHRoaXMuX21ldGFkYXRhU2VydmljZSA9IG5ldyBNZXRhZGF0YVNlcnZpY2VDdG9yKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuX2V4dHJhUXVlcnlQYXJhbXMgPSB0eXBlb2YgZXh0cmFRdWVyeVBhcmFtcyA9PT0gJ29iamVjdCcgPyBleHRyYVF1ZXJ5UGFyYW1zIDoge307XG4gICAgfVxuXG4gICAgLy8gY2xpZW50IGNvbmZpZ1xuICAgIGdldCBjbGllbnRfaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGllbnRfaWQ7XG4gICAgfVxuICAgIHNldCBjbGllbnRfaWQodmFsdWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRfaWQpIHtcbiAgICAgICAgICAgIC8vIG9uZS10aW1lIHNldCBvbmx5XG4gICAgICAgICAgICB0aGlzLl9jbGllbnRfaWQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIk9pZGNDbGllbnRTZXR0aW5ncy5zZXRfY2xpZW50X2lkOiBjbGllbnRfaWQgaGFzIGFscmVhZHkgYmVlbiBhc3NpZ25lZC5cIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNsaWVudF9pZCBoYXMgYWxyZWFkeSBiZWVuIGFzc2lnbmVkLlwiKVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBjbGllbnRfc2VjcmV0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xpZW50X3NlY3JldDtcbiAgICB9XG4gICAgZ2V0IHJlc3BvbnNlX3R5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZV90eXBlO1xuICAgIH1cbiAgICBnZXQgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY29wZTtcbiAgICB9XG4gICAgZ2V0IHJlZGlyZWN0X3VyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZGlyZWN0X3VyaTtcbiAgICB9XG4gICAgZ2V0IHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcbiAgICB9XG5cblxuICAgIC8vIG9wdGlvbmFsIHByb3RvY29sIHBhcmFtc1xuICAgIGdldCBwcm9tcHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQ7XG4gICAgfVxuICAgIGdldCBkaXNwbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheTtcbiAgICB9XG4gICAgZ2V0IG1heF9hZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhfYWdlO1xuICAgIH1cbiAgICBnZXQgdWlfbG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VpX2xvY2FsZXM7XG4gICAgfVxuICAgIGdldCBhY3JfdmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWNyX3ZhbHVlcztcbiAgICB9XG4gICAgZ2V0IHJlc291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7XG4gICAgfVxuICAgIGdldCByZXNwb25zZV9tb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VfbW9kZTtcbiAgICB9XG5cblxuICAgIC8vIG1ldGFkYXRhXG4gICAgZ2V0IGF1dGhvcml0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhvcml0eTtcbiAgICB9XG4gICAgc2V0IGF1dGhvcml0eSh2YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMuX2F1dGhvcml0eSkge1xuICAgICAgICAgICAgLy8gb25lLXRpbWUgc2V0IG9ubHlcbiAgICAgICAgICAgIHRoaXMuX2F1dGhvcml0eSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiT2lkY0NsaWVudFNldHRpbmdzLnNldF9hdXRob3JpdHk6IGF1dGhvcml0eSBoYXMgYWxyZWFkeSBiZWVuIGFzc2lnbmVkLlwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXV0aG9yaXR5IGhhcyBhbHJlYWR5IGJlZW4gYXNzaWduZWQuXCIpXG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG1ldGFkYXRhVXJsKCkge1xuICAgICAgICBpZiAoIXRoaXMuX21ldGFkYXRhVXJsKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCA9IHRoaXMuYXV0aG9yaXR5O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fbWV0YWRhdGFVcmwgJiYgdGhpcy5fbWV0YWRhdGFVcmwuaW5kZXhPZihPaWRjTWV0YWRhdGFVcmxQYXRoKSA8IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWV0YWRhdGFVcmxbdGhpcy5fbWV0YWRhdGFVcmwubGVuZ3RoIC0gMV0gIT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXRhZGF0YVVybCArPSAnLyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX21ldGFkYXRhVXJsICs9IE9pZGNNZXRhZGF0YVVybFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFVcmw7XG4gICAgfVxuXG4gICAgLy8gc2V0dGFibGUvY2FjaGFibGUgbWV0YWRhdGEgdmFsdWVzXG4gICAgZ2V0IG1ldGFkYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGE7XG4gICAgfVxuICAgIHNldCBtZXRhZGF0YSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9tZXRhZGF0YSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzaWduaW5nS2V5cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbmdLZXlzO1xuICAgIH1cbiAgICBzZXQgc2lnbmluZ0tleXModmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2lnbmluZ0tleXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBiZWhhdmlvciBmbGFnc1xuICAgIGdldCBmaWx0ZXJQcm90b2NvbENsYWltcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclByb3RvY29sQ2xhaW1zO1xuICAgIH1cbiAgICBnZXQgbG9hZFVzZXJJbmZvKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFVzZXJJbmZvO1xuICAgIH1cbiAgICBnZXQgc3RhbGVTdGF0ZUFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YWxlU3RhdGVBZ2U7XG4gICAgfVxuICAgIGdldCBjbG9ja1NrZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1NrZXc7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlU3RvcmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZVN0b3JlO1xuICAgIH1cbiAgICBnZXQgdmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yO1xuICAgIH1cbiAgICBnZXQgbWV0YWRhdGFTZXJ2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlO1xuICAgIH1cblxuICAgIC8vIGV4dHJhIHF1ZXJ5IHBhcmFtc1xuICAgIGdldCBleHRyYVF1ZXJ5UGFyYW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXh0cmFRdWVyeVBhcmFtcztcbiAgICB9XG4gICAgc2V0IGV4dHJhUXVlcnlQYXJhbXModmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpe1xuICAgICAgICAgICAgdGhpcy5fZXh0cmFRdWVyeVBhcmFtcyA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXh0cmFRdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgUG9wdXBXaW5kb3cgfSBmcm9tICcuL1BvcHVwV2luZG93LmpzJztcblxuZXhwb3J0IGNsYXNzIFBvcHVwTmF2aWdhdG9yIHtcblxuICAgIHByZXBhcmUocGFyYW1zKSB7XG4gICAgICAgIGxldCBwb3B1cCA9IG5ldyBQb3B1cFdpbmRvdyhwYXJhbXMpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvcHVwKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayh1cmwsIGtlZXBPcGVuLCBkZWxpbWl0ZXIpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBOYXZpZ2F0b3IuY2FsbGJhY2tcIik7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFBvcHVwV2luZG93Lm5vdGlmeU9wZW5lcih1cmwsIGtlZXBPcGVuLCBkZWxpbWl0ZXIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5pbXBvcnQgeyBVcmxVdGlsaXR5IH0gZnJvbSAnLi9VcmxVdGlsaXR5LmpzJztcblxuY29uc3QgQ2hlY2tGb3JQb3B1cENsb3NlZEludGVydmFsID0gNTAwO1xuY29uc3QgRGVmYXVsdFBvcHVwRmVhdHVyZXMgPSAnbG9jYXRpb249bm8sdG9vbGJhcj1ubyx3aWR0aD01MDAsaGVpZ2h0PTUwMCxsZWZ0PTEwMCx0b3A9MTAwOyc7XG4vL2NvbnN0IERlZmF1bHRQb3B1cEZlYXR1cmVzID0gJ2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sd2lkdGg9NTAwLGhlaWdodD01MDAsbGVmdD0xMDAsdG9wPTEwMDtyZXNpemFibGU9eWVzJztcblxuY29uc3QgRGVmYXVsdFBvcHVwVGFyZ2V0ID0gXCJfYmxhbmtcIjtcblxuZXhwb3J0IGNsYXNzIFBvcHVwV2luZG93IHtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGlzLl9yZWplY3QgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCB0YXJnZXQgPSBwYXJhbXMucG9wdXBXaW5kb3dUYXJnZXQgfHwgRGVmYXVsdFBvcHVwVGFyZ2V0O1xuICAgICAgICBsZXQgZmVhdHVyZXMgPSBwYXJhbXMucG9wdXBXaW5kb3dGZWF0dXJlcyB8fCBEZWZhdWx0UG9wdXBGZWF0dXJlcztcblxuICAgICAgICB0aGlzLl9wb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCB0YXJnZXQsIGZlYXR1cmVzKTtcbiAgICAgICAgaWYgKHRoaXMuX3BvcHVwKSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJQb3B1cFdpbmRvdy5jdG9yOiBwb3B1cCBzdWNjZXNzZnVsbHkgY3JlYXRlZFwiKTtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUG9wdXBDbG9zZWRUaW1lciA9IHdpbmRvdy5zZXRJbnRlcnZhbCh0aGlzLl9jaGVja0ZvclBvcHVwQ2xvc2VkLmJpbmQodGhpcyksIENoZWNrRm9yUG9wdXBDbG9zZWRJbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcHJvbWlzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XG4gICAgfVxuXG4gICAgbmF2aWdhdGUocGFyYW1zKSB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiUG9wdXBXaW5kb3cubmF2aWdhdGU6IEVycm9yIG9wZW5pbmcgcG9wdXAgd2luZG93XCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy51cmwpIHtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiUG9wdXBXaW5kb3cubmF2aWdhdGU6IG5vIHVybCBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKFwiTm8gdXJsIHByb3ZpZGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cubmF2aWdhdGU6IFNldHRpbmcgVVJMIGluIHBvcHVwXCIpO1xuXG4gICAgICAgICAgICB0aGlzLl9pZCA9IHBhcmFtcy5pZDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgICAgICAgICAgIHdpbmRvd1tcInBvcHVwQ2FsbGJhY2tfXCIgKyBwYXJhbXMuaWRdID0gdGhpcy5fY2FsbGJhY2suYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcG9wdXAuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLndpbmRvdy5sb2NhdGlvbiA9IHBhcmFtcy51cmw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlO1xuICAgIH1cblxuICAgIF9zdWNjZXNzKGRhdGEpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY2FsbGJhY2s6IFN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBwb3B1cCB3aW5kb3dcIik7XG5cbiAgICAgICAgdGhpcy5fY2xlYW51cCgpO1xuICAgICAgICB0aGlzLl9yZXNvbHZlKGRhdGEpO1xuICAgIH1cbiAgICBfZXJyb3IobWVzc2FnZSkge1xuICAgICAgICBMb2cuZXJyb3IoXCJQb3B1cFdpbmRvdy5lcnJvcjogXCIsIG1lc3NhZ2UpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5fY2xlYW51cCgpO1xuICAgICAgICB0aGlzLl9yZWplY3QobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5fY2xlYW51cChmYWxzZSk7XG4gICAgfVxuXG4gICAgX2NsZWFudXAoa2VlcE9wZW4pIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY2xlYW51cFwiKTtcblxuICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9jaGVja0ZvclBvcHVwQ2xvc2VkVGltZXIpO1xuICAgICAgICB0aGlzLl9jaGVja0ZvclBvcHVwQ2xvc2VkVGltZXIgPSBudWxsO1xuXG4gICAgICAgIGRlbGV0ZSB3aW5kb3dbXCJwb3B1cENhbGxiYWNrX1wiICsgdGhpcy5faWRdO1xuXG4gICAgICAgIGlmICh0aGlzLl9wb3B1cCAmJiAha2VlcE9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9wdXAgPSBudWxsO1xuICAgIH1cblxuICAgIF9jaGVja0ZvclBvcHVwQ2xvc2VkKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3BvcHVwIHx8IHRoaXMuX3BvcHVwLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IoXCJQb3B1cCB3aW5kb3cgY2xvc2VkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2NhbGxiYWNrKHVybCwga2VlcE9wZW4pIHtcbiAgICAgICAgdGhpcy5fY2xlYW51cChrZWVwT3Blbik7XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUG9wdXBXaW5kb3cuY2FsbGJhY2sgc3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIHRoaXMuX3N1Y2Nlc3MoeyB1cmw6IHVybCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlBvcHVwV2luZG93LmNhbGxiYWNrOiBJbnZhbGlkIHJlc3BvbnNlIGZyb20gcG9wdXBcIik7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcihcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBwb3B1cFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBub3RpZnlPcGVuZXIodXJsLCBrZWVwT3BlbiwgZGVsaW1pdGVyKSB7XG4gICAgICAgIGlmICh3aW5kb3cub3BlbmVyKSB7XG4gICAgICAgICAgICB1cmwgPSB1cmwgfHwgd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBVcmxVdGlsaXR5LnBhcnNlVXJsRnJhZ21lbnQodXJsLCBkZWxpbWl0ZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBcInBvcHVwQ2FsbGJhY2tfXCIgKyBkYXRhLnN0YXRlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSB3aW5kb3cub3BlbmVyW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlBvcHVwV2luZG93Lm5vdGlmeU9wZW5lcjogcGFzc2luZyB1cmwgbWVzc2FnZSB0byBvcGVuZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh1cmwsIGtlZXBPcGVuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiUG9wdXBXaW5kb3cubm90aWZ5T3BlbmVyOiBubyBtYXRjaGluZyBjYWxsYmFjayBmb3VuZCBvbiBvcGVuZXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiUG9wdXBXaW5kb3cubm90aWZ5T3BlbmVyOiBubyBzdGF0ZSBmb3VuZCBpbiByZXNwb25zZSB1cmxcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgTG9nLndhcm4oXCJQb3B1cFdpbmRvdy5ub3RpZnlPcGVuZXI6IG5vIHdpbmRvdy5vcGVuZXIuIENhbid0IGNvbXBsZXRlIG5vdGlmaWNhdGlvbi5cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZWRpcmVjdE5hdmlnYXRvciB7XG5cbiAgICBwcmVwYXJlKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlKHBhcmFtcykge1xuICAgICAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLnVybCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVkaXJlY3ROYXZpZ2F0b3IubmF2aWdhdGU6IE5vIHVybCBwcm92aWRlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyB1cmwgcHJvdmlkZWRcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gcGFyYW1zLnVybDtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4vTWV0YWRhdGFTZXJ2aWNlLmpzJztcbmltcG9ydCB7IFVzZXJJbmZvU2VydmljZSB9IGZyb20gJy4vVXNlckluZm9TZXJ2aWNlLmpzJztcbmltcG9ydCB7IFRva2VuQ2xpZW50IH0gZnJvbSAnLi9Ub2tlbkNsaWVudC5qcyc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi9FcnJvclJlc3BvbnNlLmpzJztcbmltcG9ydCB7IEpvc2VVdGlsIH0gZnJvbSAnLi9Kb3NlVXRpbC5qcyc7XG5cbmNvbnN0IFByb3RvY29sQ2xhaW1zID0gW1wibm9uY2VcIiwgXCJhdF9oYXNoXCIsIFwiaWF0XCIsIFwibmJmXCIsIFwiZXhwXCIsIFwiYXVkXCIsIFwiaXNzXCIsIFwiY19oYXNoXCJdO1xuXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VWYWxpZGF0b3Ige1xuXG4gICAgY29uc3RydWN0b3Ioc2V0dGluZ3MsIFxuICAgICAgICBNZXRhZGF0YVNlcnZpY2VDdG9yID0gTWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICBVc2VySW5mb1NlcnZpY2VDdG9yID0gVXNlckluZm9TZXJ2aWNlLCBcbiAgICAgICAgam9zZVV0aWwgPSBKb3NlVXRpbCxcbiAgICAgICAgVG9rZW5DbGllbnRDdG9yID0gVG9rZW5DbGllbnQpIHtcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuY3RvcjogTm8gc2V0dGluZ3MgcGFzc2VkIHRvIFJlc3BvbnNlVmFsaWRhdG9yXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0dGluZ3NcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UgPSBuZXcgTWV0YWRhdGFTZXJ2aWNlQ3Rvcih0aGlzLl9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3VzZXJJbmZvU2VydmljZSA9IG5ldyBVc2VySW5mb1NlcnZpY2VDdG9yKHRoaXMuX3NldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fam9zZVV0aWwgPSBqb3NlVXRpbDtcbiAgICAgICAgdGhpcy5fdG9rZW5DbGllbnQgPSBuZXcgVG9rZW5DbGllbnRDdG9yKHRoaXMuX3NldHRpbmdzKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVNpZ25pblJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSkge1xuICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25pblJlc3BvbnNlXCIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU2lnbmluUGFyYW1zKHN0YXRlLCByZXNwb25zZSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25pblJlc3BvbnNlOiBzdGF0ZSBwcm9jZXNzZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVUb2tlbnMoc3RhdGUsIHJlc3BvbnNlKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25pblJlc3BvbnNlOiB0b2tlbnMgdmFsaWRhdGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzQ2xhaW1zKHJlc3BvbnNlKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IudmFsaWRhdGVTaWduaW5SZXNwb25zZTogY2xhaW1zIHByb2Nlc3NlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhbGlkYXRlU2lnbm91dFJlc3BvbnNlKHN0YXRlLCByZXNwb25zZSkge1xuICAgICAgICBpZiAoc3RhdGUuaWQgIT09IHJlc3BvbnNlLnN0YXRlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci52YWxpZGF0ZVNpZ25vdXRSZXNwb25zZTogU3RhdGUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiU3RhdGUgZG9lcyBub3QgbWF0Y2hcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm93IHRoYXQgd2Uga25vdyB0aGUgc3RhdGUgbWF0Y2hlcywgdGFrZSB0aGUgc3RvcmVkIGRhdGFcbiAgICAgICAgLy8gYW5kIHNldCBpdCBpbnRvIHRoZSByZXNwb25zZSBzbyBjYWxsZXJzIGNhbiBnZXQgdGhlaXIgc3RhdGVcbiAgICAgICAgLy8gdGhpcyBpcyBpbXBvcnRhbnQgZm9yIGJvdGggc3VjY2VzcyAmIGVycm9yIG91dGNvbWVzXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLnZhbGlkYXRlU2lnbm91dFJlc3BvbnNlOiBzdGF0ZSB2YWxpZGF0ZWRcIik7XG4gICAgICAgIHJlc3BvbnNlLnN0YXRlID0gc3RhdGUuZGF0YTtcblxuICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgIExvZy53YXJuKFwiUmVzcG9uc2VWYWxpZGF0b3IudmFsaWRhdGVTaWdub3V0UmVzcG9uc2U6IFJlc3BvbnNlIHdhcyBlcnJvclwiLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH1cblxuICAgIF9wcm9jZXNzU2lnbmluUGFyYW1zKHN0YXRlLCByZXNwb25zZSkge1xuICAgICAgICBpZiAoc3RhdGUuaWQgIT09IHJlc3BvbnNlLnN0YXRlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc1NpZ25pblBhcmFtczogU3RhdGUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiU3RhdGUgZG9lcyBub3QgbWF0Y2hcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5jbGllbnRfaWQpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBObyBjbGllbnRfaWQgb24gc3RhdGVcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gY2xpZW50X2lkIG9uIHN0YXRlXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RhdGUuYXV0aG9yaXR5KSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc1NpZ25pblBhcmFtczogTm8gYXV0aG9yaXR5IG9uIHN0YXRlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGF1dGhvcml0eSBvbiBzdGF0ZVwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzIGFsbG93cyB0aGUgYXV0aG9yaXR5IHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBzaWduaW4gc3RhdGVcbiAgICAgICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzLmF1dGhvcml0eSA9IHN0YXRlLmF1dGhvcml0eTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbnN1cmUgd2UncmUgdXNpbmcgdGhlIGNvcnJlY3QgYXV0aG9yaXR5IGlmIHRoZSBhdXRob3JpdHkgaXMgbm90IGxvYWRlZCBmcm9tIHNpZ25pbiBzdGF0ZVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9zZXR0aW5ncy5hdXRob3JpdHkgJiYgdGhpcy5fc2V0dGluZ3MuYXV0aG9yaXR5ICE9PSBzdGF0ZS5hdXRob3JpdHkpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBhdXRob3JpdHkgbWlzbWF0Y2ggb24gc2V0dGluZ3MgdnMuIHNpZ25pbiBzdGF0ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJhdXRob3JpdHkgbWlzbWF0Y2ggb24gc2V0dGluZ3MgdnMuIHNpZ25pbiBzdGF0ZVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcyBhbGxvd3MgdGhlIGNsaWVudF9pZCB0byBiZSBsb2FkZWQgZnJvbSB0aGUgc2lnbmluIHN0YXRlXG4gICAgICAgIGlmICghdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQgPSBzdGF0ZS5jbGllbnRfaWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZW5zdXJlIHdlJ3JlIHVzaW5nIHRoZSBjb3JyZWN0IGNsaWVudF9pZCBpZiB0aGUgY2xpZW50X2lkIGlzIG5vdCBsb2FkZWQgZnJvbSBzaWduaW4gc3RhdGVcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkICYmIHRoaXMuX3NldHRpbmdzLmNsaWVudF9pZCAhPT0gc3RhdGUuY2xpZW50X2lkKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc1NpZ25pblBhcmFtczogY2xpZW50X2lkIG1pc21hdGNoIG9uIHNldHRpbmdzIHZzLiBzaWduaW4gc3RhdGVcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiY2xpZW50X2lkIG1pc21hdGNoIG9uIHNldHRpbmdzIHZzLiBzaWduaW4gc3RhdGVcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm93IHRoYXQgd2Uga25vdyB0aGUgc3RhdGUgbWF0Y2hlcywgdGFrZSB0aGUgc3RvcmVkIGRhdGFcbiAgICAgICAgLy8gYW5kIHNldCBpdCBpbnRvIHRoZSByZXNwb25zZSBzbyBjYWxsZXJzIGNhbiBnZXQgdGhlaXIgc3RhdGVcbiAgICAgICAgLy8gdGhpcyBpcyBpbXBvcnRhbnQgZm9yIGJvdGggc3VjY2VzcyAmIGVycm9yIG91dGNvbWVzXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBzdGF0ZSB2YWxpZGF0ZWRcIik7XG4gICAgICAgIHJlc3BvbnNlLnN0YXRlID0gc3RhdGUuZGF0YTtcblxuICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgIExvZy53YXJuKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IFJlc3BvbnNlIHdhcyBlcnJvclwiLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5ub25jZSAmJiAhcmVzcG9uc2UuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBFeHBlY3RpbmcgaWRfdG9rZW4gaW4gcmVzcG9uc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gaWRfdG9rZW4gaW4gcmVzcG9uc2VcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5ub25jZSAmJiByZXNwb25zZS5pZF90b2tlbikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IE5vdCBleHBlY3RpbmcgaWRfdG9rZW4gaW4gcmVzcG9uc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5leHBlY3RlZCBpZF90b2tlbiBpbiByZXNwb25zZVwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUuY29kZV92ZXJpZmllciAmJiAhcmVzcG9uc2UuY29kZSkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NTaWduaW5QYXJhbXM6IEV4cGVjdGluZyBjb2RlIGluIHJlc3BvbnNlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIGNvZGUgaW4gcmVzcG9uc2VcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzdGF0ZS5jb2RlX3ZlcmlmaWVyICYmIHJlc3BvbnNlLmNvZGUpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzU2lnbmluUGFyYW1zOiBOb3QgZXhwZWN0aW5nIGNvZGUgaW4gcmVzcG9uc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5leHBlY3RlZCBjb2RlIGluIHJlc3BvbnNlXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH1cblxuICAgIF9wcm9jZXNzQ2xhaW1zKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5pc09wZW5JZENvbm5lY3QpIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiByZXNwb25zZSBpcyBPSURDLCBwcm9jZXNzaW5nIGNsYWltc1wiKTtcblxuICAgICAgICAgICAgcmVzcG9uc2UucHJvZmlsZSA9IHRoaXMuX2ZpbHRlclByb3RvY29sQ2xhaW1zKHJlc3BvbnNlLnByb2ZpbGUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MubG9hZFVzZXJJbmZvICYmIHJlc3BvbnNlLmFjY2Vzc190b2tlbikge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiBsb2FkaW5nIHVzZXIgaW5mb1wiKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VySW5mb1NlcnZpY2UuZ2V0Q2xhaW1zKHJlc3BvbnNlLmFjY2Vzc190b2tlbikudGhlbihjbGFpbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fcHJvY2Vzc0NsYWltczogdXNlciBpbmZvIGNsYWltcyByZWNlaXZlZCBmcm9tIHVzZXIgaW5mbyBlbmRwb2ludFwiKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhaW1zLnN1YiAhPT0gcmVzcG9uc2UucHJvZmlsZS5zdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiBzdWIgZnJvbSB1c2VyIGluZm8gZW5kcG9pbnQgZG9lcyBub3QgbWF0Y2ggc3ViIGluIGFjY2Vzc190b2tlblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJzdWIgZnJvbSB1c2VyIGluZm8gZW5kcG9pbnQgZG9lcyBub3QgbWF0Y2ggc3ViIGluIGFjY2Vzc190b2tlblwiKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5wcm9maWxlID0gdGhpcy5fbWVyZ2VDbGFpbXMocmVzcG9uc2UucHJvZmlsZSwgY2xhaW1zKTtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NDbGFpbXM6IHVzZXIgaW5mbyBjbGFpbXMgcmVjZWl2ZWQsIHVwZGF0ZWQgcHJvZmlsZTpcIiwgcmVzcG9uc2UucHJvZmlsZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NDbGFpbXM6IG5vdCBsb2FkaW5nIHVzZXIgaW5mb1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ2xhaW1zOiByZXNwb25zZSBpcyBub3QgT0lEQywgbm90IHByb2Nlc3NpbmcgY2xhaW1zXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxuXG4gICAgX21lcmdlQ2xhaW1zKGNsYWltczEsIGNsYWltczIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIGNsYWltczEpO1xuXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gY2xhaW1zMikge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGNsYWltczJbbmFtZV07XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbbmFtZV0uaW5kZXhPZih2YWx1ZSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0W25hbWVdICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBbcmVzdWx0W25hbWVdLCB2YWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBfZmlsdGVyUHJvdG9jb2xDbGFpbXMoY2xhaW1zKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9maWx0ZXJQcm90b2NvbENsYWltcywgaW5jb21pbmcgY2xhaW1zOlwiLCBjbGFpbXMpO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBjbGFpbXMpO1xuXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5fZmlsdGVyUHJvdG9jb2xDbGFpbXMpIHtcbiAgICAgICAgICAgIFByb3RvY29sQ2xhaW1zLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFt0eXBlXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fZmlsdGVyUHJvdG9jb2xDbGFpbXM6IHByb3RvY29sIGNsYWltcyBmaWx0ZXJlZFwiLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX2ZpbHRlclByb3RvY29sQ2xhaW1zOiBwcm90b2NvbCBjbGFpbXMgbm90IGZpbHRlcmVkXCIpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIF92YWxpZGF0ZVRva2VucyhzdGF0ZSwgcmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUpIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZVRva2VuczogVmFsaWRhdGluZyBjb2RlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NDb2RlKHN0YXRlLCByZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2UuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVUb2tlbnM6IFZhbGlkYXRpbmcgaWRfdG9rZW4gYW5kIGFjY2Vzc190b2tlblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVJZFRva2VuQW5kQWNjZXNzVG9rZW4oc3RhdGUsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlVG9rZW5zOiBWYWxpZGF0aW5nIGlkX3Rva2VuXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlSWRUb2tlbihzdGF0ZSwgcmVzcG9uc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlVG9rZW5zOiBObyBjb2RlIHRvIHByb2Nlc3Mgb3IgaWRfdG9rZW4gdG8gdmFsaWRhdGVcIik7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH1cblxuICAgIF9wcm9jZXNzQ29kZShzdGF0ZSwgcmVzcG9uc2UpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSB7XG4gICAgICAgICAgICBjbGllbnRfaWQ6IHN0YXRlLmNsaWVudF9pZCxcbiAgICAgICAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuX3NldHRpbmdzLmNsaWVudF9zZWNyZXQsXG4gICAgICAgICAgICBjb2RlIDogcmVzcG9uc2UuY29kZSxcbiAgICAgICAgICAgIHJlZGlyZWN0X3VyaTogc3RhdGUucmVkaXJlY3RfdXJpLFxuICAgICAgICAgICAgY29kZV92ZXJpZmllcjogc3RhdGUuY29kZV92ZXJpZmllcixcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbkNsaWVudC5leGNoYW5nZUNvZGUocmVxdWVzdCkudGhlbih0b2tlblJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gdG9rZW5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlW2tleV0gPSB0b2tlblJlc3BvbnNlW2tleV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5pZF90b2tlbikge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9wcm9jZXNzQ29kZTogdG9rZW4gcmVzcG9uc2Ugc3VjY2Vzc2Z1bCwgcHJvY2Vzc2luZyBpZF90b2tlblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVJZFRva2VuQXR0cmlidXRlcyhzdGF0ZSwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3Byb2Nlc3NDb2RlOiB0b2tlbiByZXNwb25zZSBzdWNjZXNzZnVsLCByZXR1cm5pbmcgcmVzcG9uc2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXMoc3RhdGUsIHJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0SXNzdWVyKCkudGhlbihpc3N1ZXIgPT4ge1xuXG4gICAgICAgICAgICBsZXQgYXVkaWVuY2UgPSBzdGF0ZS5jbGllbnRfaWQ7XG4gICAgICAgICAgICBsZXQgY2xvY2tTa2V3SW5TZWNvbmRzID0gdGhpcy5fc2V0dGluZ3MuY2xvY2tTa2V3O1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXM6IFZhbGlkYWluZyBKV1QgYXR0cmlidXRlczsgdXNpbmcgY2xvY2sgc2tldyAoaW4gc2Vjb25kcykgb2Y6IFwiLCBjbG9ja1NrZXdJblNlY29uZHMpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fam9zZVV0aWwudmFsaWRhdGVKd3RBdHRyaWJ1dGVzKHJlc3BvbnNlLmlkX3Rva2VuLCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXdJblNlY29uZHMpLnRoZW4ocGF5bG9hZCA9PiB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUubm9uY2UgJiYgc3RhdGUubm9uY2UgIT09IHBheWxvYWQubm9uY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbkF0dHJpYnV0ZXM6IEludmFsaWQgbm9uY2UgaW4gaWRfdG9rZW5cIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJJbnZhbGlkIG5vbmNlIGluIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWQuc3ViKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW5BdHRyaWJ1dGVzOiBObyBzdWIgcHJlc2VudCBpbiBpZF90b2tlblwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHN1YiBwcmVzZW50IGluIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5wcm9maWxlID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3ZhbGlkYXRlSWRUb2tlbkFuZEFjY2Vzc1Rva2VuKHN0YXRlLCByZXNwb25zZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVJZFRva2VuKHN0YXRlLCByZXNwb25zZSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVBY2Nlc3NUb2tlbihyZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF92YWxpZGF0ZUlkVG9rZW4oc3RhdGUsIHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICghc3RhdGUubm9uY2UpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IE5vIG5vbmNlIG9uIHN0YXRlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIG5vbmNlIG9uIHN0YXRlXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBqd3QgPSB0aGlzLl9qb3NlVXRpbC5wYXJzZUp3dChyZXNwb25zZS5pZF90b2tlbik7XG4gICAgICAgIGlmICghand0IHx8ICFqd3QuaGVhZGVyIHx8ICFqd3QucGF5bG9hZCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogRmFpbGVkIHRvIHBhcnNlIGlkX3Rva2VuXCIsIGp3dCk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5ub25jZSAhPT0gand0LnBheWxvYWQubm9uY2UpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IEludmFsaWQgbm9uY2UgaW4gaWRfdG9rZW5cIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBub25jZSBpbiBpZF90b2tlblwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2lkID0gand0LmhlYWRlci5raWQ7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRJc3N1ZXIoKS50aGVuKGlzc3VlciA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBSZWNlaXZlZCBpc3N1ZXJcIik7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YVNlcnZpY2UuZ2V0U2lnbmluZ0tleXMoKS50aGVuKGtleXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgha2V5cykge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBObyBzaWduaW5nIGtleXMgZnJvbSBtZXRhZGF0YVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHNpZ25pbmcga2V5cyBmcm9tIG1ldGFkYXRhXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVJZFRva2VuOiBSZWNlaXZlZCBzaWduaW5nIGtleXNcIik7XG4gICAgICAgICAgICAgICAgbGV0IGtleTtcbiAgICAgICAgICAgICAgICBpZiAoIWtpZCkge1xuICAgICAgICAgICAgICAgICAgICBrZXlzID0gdGhpcy5fZmlsdGVyQnlBbGcoa2V5cywgand0LmhlYWRlci5hbGcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IE5vIGtpZCBmb3VuZCBpbiBpZF90b2tlbiBhbmQgbW9yZSB0aGFuIG9uZSBrZXkgZm91bmQgaW4gbWV0YWRhdGFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8ga2lkIGZvdW5kIGluIGlkX3Rva2VuIGFuZCBtb3JlIHRoYW4gb25lIGtleSBmb3VuZCBpbiBtZXRhZGF0YVwiKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBraWQgaXMgbWFuZGF0b3J5IG9ubHkgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUga2V5cyBpbiB0aGUgcmVmZXJlbmNlZCBKV0sgU2V0IGRvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWUgaHR0cDovL29wZW5pZC5uZXQvc3BlY3Mvb3BlbmlkLWNvbm5lY3QtY29yZS0xXzAuaHRtbCNTaWduaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5raWQgPT09IGtpZDtcbiAgICAgICAgICAgICAgICAgICAgfSlbMF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogTm8ga2V5IG1hdGNoaW5nIGtpZCBvciBhbGcgZm91bmQgaW4gc2lnbmluZyBrZXlzXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8ga2V5IG1hdGNoaW5nIGtpZCBvciBhbGcgZm91bmQgaW4gc2lnbmluZyBrZXlzXCIpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaWVuY2UgPSBzdGF0ZS5jbGllbnRfaWQ7XG5cbiAgICAgICAgICAgICAgICBsZXQgY2xvY2tTa2V3SW5TZWNvbmRzID0gdGhpcy5fc2V0dGluZ3MuY2xvY2tTa2V3O1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUlkVG9rZW46IFZhbGlkYWluZyBKV1Q7IHVzaW5nIGNsb2NrIHNrZXcgKGluIHNlY29uZHMpIG9mOiBcIiwgY2xvY2tTa2V3SW5TZWNvbmRzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9qb3NlVXRpbC52YWxpZGF0ZUp3dChyZXNwb25zZS5pZF90b2tlbiwga2V5LCBpc3N1ZXIsIGF1ZGllbmNlLCBjbG9ja1NrZXdJblNlY29uZHMpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogSldUIHZhbGlkYXRpb24gc3VjY2Vzc2Z1bFwiKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWp3dC5wYXlsb2FkLnN1Yikge1xuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlSWRUb2tlbjogTm8gc3ViIHByZXNlbnQgaW4gaWRfdG9rZW5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gc3ViIHByZXNlbnQgaW4gaWRfdG9rZW5cIikpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucHJvZmlsZSA9IGp3dC5wYXlsb2FkO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfZmlsdGVyQnlBbGcoa2V5cywgYWxnKXtcbiAgICAgICAgdmFyIGt0eSA9IG51bGw7XG4gICAgICAgIGlmIChhbGcuc3RhcnRzV2l0aChcIlJTXCIpKSB7XG4gICAgICAgICAgICBrdHkgPSBcIlJTQVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFsZy5zdGFydHNXaXRoKFwiUFNcIikpIHtcbiAgICAgICAgICAgIGt0eSA9IFwiUFNcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhbGcuc3RhcnRzV2l0aChcIkVTXCIpKSB7XG4gICAgICAgICAgICBrdHkgPSBcIkVDXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fZmlsdGVyQnlBbGc6IGFsZyBub3Qgc3VwcG9ydGVkOiBcIiwgYWxnKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl9maWx0ZXJCeUFsZzogTG9va2luZyBmb3Iga2V5cyB0aGF0IG1hdGNoIGt0eTogXCIsIGt0eSk7XG5cbiAgICAgICAga2V5cyA9IGtleXMuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Lmt0eSA9PT0ga3R5O1xuICAgICAgICB9KTtcblxuICAgICAgICBMb2cuZGVidWcoXCJSZXNwb25zZVZhbGlkYXRvci5fZmlsdGVyQnlBbGc6IE51bWJlciBvZiBrZXlzIHRoYXQgbWF0Y2gga3R5OiBcIiwga3R5LCBrZXlzLmxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfVxuXG4gICAgX3ZhbGlkYXRlQWNjZXNzVG9rZW4ocmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5wcm9maWxlKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogTm8gcHJvZmlsZSBsb2FkZWQgZnJvbSBpZF90b2tlblwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBwcm9maWxlIGxvYWRlZCBmcm9tIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzcG9uc2UucHJvZmlsZS5hdF9oYXNoKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogTm8gYXRfaGFzaCBpbiBpZF90b2tlblwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBhdF9oYXNoIGluIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzcG9uc2UuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBObyBpZF90b2tlblwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBpZF90b2tlblwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgand0ID0gdGhpcy5fam9zZVV0aWwucGFyc2VKd3QocmVzcG9uc2UuaWRfdG9rZW4pO1xuICAgICAgICBpZiAoIWp3dCB8fCAhand0LmhlYWRlcikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlQWNjZXNzVG9rZW46IEZhaWxlZCB0byBwYXJzZSBpZF90b2tlblwiLCBqd3QpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBpZF90b2tlblwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFzaEFsZyA9IGp3dC5oZWFkZXIuYWxnO1xuICAgICAgICBpZiAoIWhhc2hBbGcgfHwgaGFzaEFsZy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBVbnN1cHBvcnRlZCBhbGc6XCIsIGhhc2hBbGcpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGFsZzogXCIgKyBoYXNoQWxnKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFzaEJpdHMgPSBoYXNoQWxnLnN1YnN0cigyLCAzKTtcbiAgICAgICAgaWYgKCFoYXNoQml0cykge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlQWNjZXNzVG9rZW46IFVuc3VwcG9ydGVkIGFsZzpcIiwgaGFzaEFsZywgaGFzaEJpdHMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGFsZzogXCIgKyBoYXNoQWxnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBoYXNoQml0cyA9IHBhcnNlSW50KGhhc2hCaXRzKTtcbiAgICAgICAgaWYgKGhhc2hCaXRzICE9PSAyNTYgJiYgaGFzaEJpdHMgIT09IDM4NCAmJiBoYXNoQml0cyAhPT0gNTEyKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogVW5zdXBwb3J0ZWQgYWxnOlwiLCBoYXNoQWxnLCBoYXNoQml0cyk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgYWxnOiBcIiArIGhhc2hBbGcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzaGEgPSBcInNoYVwiICsgaGFzaEJpdHM7XG4gICAgICAgIHZhciBoYXNoID0gdGhpcy5fam9zZVV0aWwuaGFzaFN0cmluZyhyZXNwb25zZS5hY2Nlc3NfdG9rZW4sIHNoYSk7XG4gICAgICAgIGlmICghaGFzaCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiUmVzcG9uc2VWYWxpZGF0b3IuX3ZhbGlkYXRlQWNjZXNzVG9rZW46IGFjY2Vzc190b2tlbiBoYXNoIGZhaWxlZDpcIiwgc2hhKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGYWlsZWQgdG8gdmFsaWRhdGUgYXRfaGFzaFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbGVmdCA9IGhhc2guc3Vic3RyKDAsIGhhc2gubGVuZ3RoIC8gMik7XG4gICAgICAgIHZhciBsZWZ0X2I2NHUgPSB0aGlzLl9qb3NlVXRpbC5oZXhUb0Jhc2U2NFVybChsZWZ0KTtcbiAgICAgICAgaWYgKGxlZnRfYjY0dSAhPT0gcmVzcG9uc2UucHJvZmlsZS5hdF9oYXNoKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJSZXNwb25zZVZhbGlkYXRvci5fdmFsaWRhdGVBY2Nlc3NUb2tlbjogRmFpbGVkIHRvIHZhbGlkYXRlIGF0X2hhc2hcIiwgbGVmdF9iNjR1LCByZXNwb25zZS5wcm9maWxlLmF0X2hhc2gpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byB2YWxpZGF0ZSBhdF9oYXNoXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIExvZy5kZWJ1ZyhcIlJlc3BvbnNlVmFsaWRhdG9yLl92YWxpZGF0ZUFjY2Vzc1Rva2VuOiBzdWNjZXNzXCIpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IENoZWNrU2Vzc2lvbklGcmFtZSB9IGZyb20gJy4vQ2hlY2tTZXNzaW9uSUZyYW1lLmpzJztcblxuZXhwb3J0IGNsYXNzIFNlc3Npb25Nb25pdG9yIHtcblxuICAgIGNvbnN0cnVjdG9yKHVzZXJNYW5hZ2VyLCBDaGVja1Nlc3Npb25JRnJhbWVDdG9yID0gQ2hlY2tTZXNzaW9uSUZyYW1lKSB7XG4gICAgICAgIGlmICghdXNlck1hbmFnZXIpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNlc3Npb25Nb25pdG9yLmN0b3I6IE5vIHVzZXIgbWFuYWdlciBwYXNzZWQgdG8gU2Vzc2lvbk1vbml0b3JcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VyTWFuYWdlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyID0gdXNlck1hbmFnZXI7XG4gICAgICAgIHRoaXMuX0NoZWNrU2Vzc2lvbklGcmFtZUN0b3IgPSBDaGVja1Nlc3Npb25JRnJhbWVDdG9yO1xuXG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5hZGRVc2VyTG9hZGVkKHRoaXMuX3N0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclVubG9hZGVkKHRoaXMuX3N0b3AuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZ2V0VXNlcigpLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICAvLyBkb2luZyB0aGlzIG1hbnVhbGx5IGhlcmUgc2luY2UgY2FsbGluZyBnZXRVc2VyIFxuICAgICAgICAgICAgLy8gZG9lc24ndCB0cmlnZ2VyIGxvYWQgZXZlbnQuXG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0KHVzZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgLy8gY2F0Y2ggdG8gc3VwcHJlc3MgZXJyb3JzIHNpbmNlIHdlJ3JlIGluIGEgY3RvclxuICAgICAgICAgICAgTG9nLmVycm9yKFwiU2Vzc2lvbk1vbml0b3IgY3RvcjogZXJyb3IgZnJvbSBnZXRVc2VyOlwiLCBlcnIubWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBfc2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyTWFuYWdlci5zZXR0aW5ncztcbiAgICB9XG4gICAgZ2V0IF9tZXRhZGF0YVNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyTWFuYWdlci5tZXRhZGF0YVNlcnZpY2U7XG4gICAgfVxuICAgIGdldCBfY2xpZW50X2lkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkO1xuICAgIH1cbiAgICBnZXQgX2NoZWNrU2Vzc2lvbkludGVydmFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3MuY2hlY2tTZXNzaW9uSW50ZXJ2YWw7XG4gICAgfVxuICAgIGdldCBfc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncy5zdG9wQ2hlY2tTZXNzaW9uT25FcnJvcjtcbiAgICB9XG5cbiAgICBfc3RhcnQodXNlcikge1xuICAgICAgICBsZXQgc2Vzc2lvbl9zdGF0ZSA9IHVzZXIuc2Vzc2lvbl9zdGF0ZTtcblxuICAgICAgICBpZiAoc2Vzc2lvbl9zdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc3ViID0gdXNlci5wcm9maWxlLnN1YjtcbiAgICAgICAgICAgIHRoaXMuX3NpZCA9IHVzZXIucHJvZmlsZS5zaWQ7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTZXNzaW9uTW9uaXRvci5fc3RhcnQ6IHNlc3Npb25fc3RhdGU6XCIsIHNlc3Npb25fc3RhdGUsIFwiLCBzdWI6XCIsIHRoaXMuX3N1Yik7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2hlY2tTZXNzaW9uSUZyYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWV0YWRhdGFTZXJ2aWNlLmdldENoZWNrU2Vzc2lvbklmcmFtZSgpLnRoZW4odXJsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX3N0YXJ0OiBJbml0aWFsaXppbmcgY2hlY2sgc2Vzc2lvbiBpZnJhbWVcIilcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsaWVudF9pZCA9IHRoaXMuX2NsaWVudF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuX2NoZWNrU2Vzc2lvbkludGVydmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0b3BPbkVycm9yID0gdGhpcy5fc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Vzc2lvbklGcmFtZSA9IG5ldyB0aGlzLl9DaGVja1Nlc3Npb25JRnJhbWVDdG9yKHRoaXMuX2NhbGxiYWNrLmJpbmQodGhpcyksIGNsaWVudF9pZCwgdXJsLCBpbnRlcnZhbCwgc3RvcE9uRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTZXNzaW9uSUZyYW1lLmxvYWQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUuc3RhcnQoc2Vzc2lvbl9zdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy53YXJuKFwiU2Vzc2lvbk1vbml0b3IuX3N0YXJ0OiBObyBjaGVjayBzZXNzaW9uIGlmcmFtZSBmb3VuZCBpbiB0aGUgbWV0YWRhdGFcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBjYXRjaCB0byBzdXBwcmVzcyBlcnJvcnMgc2luY2Ugd2UncmUgaW4gbm9uLXByb21pc2UgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiU2Vzc2lvbk1vbml0b3IuX3N0YXJ0OiBFcnJvciBmcm9tIGdldENoZWNrU2Vzc2lvbklmcmFtZTpcIiwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTZXNzaW9uSUZyYW1lLnN0YXJ0KHNlc3Npb25fc3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3N0b3AoKSB7XG4gICAgICAgIHRoaXMuX3N1YiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3NpZCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrU2Vzc2lvbklGcmFtZSkge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX3N0b3BcIik7XG4gICAgICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUuc3RvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2NhbGxiYWNrKCkge1xuICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5xdWVyeVNlc3Npb25TdGF0dXMoKS50aGVuKHNlc3Npb24gPT4ge1xuICAgICAgICAgICAgdmFyIHJhaXNlVXNlclNpZ25lZE91dEV2ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbi5zdWIgPT09IHRoaXMuX3N1Yikge1xuICAgICAgICAgICAgICAgICAgICByYWlzZVVzZXJTaWduZWRPdXRFdmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JRnJhbWUuc3RhcnQoc2Vzc2lvbi5zZXNzaW9uX3N0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbi5zaWQgPT09IHRoaXMuX3NpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX2NhbGxiYWNrOiBTYW1lIHN1YiBzdGlsbCBsb2dnZWQgaW4gYXQgT1AsIHJlc3RhcnRpbmcgY2hlY2sgc2Vzc2lvbiBpZnJhbWU7IHNlc3Npb25fc3RhdGU6XCIsIHNlc3Npb24uc2Vzc2lvbl9zdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJTZXNzaW9uTW9uaXRvci5fY2FsbGJhY2s6IFNhbWUgc3ViIHN0aWxsIGxvZ2dlZCBpbiBhdCBPUCwgc2Vzc2lvbiBzdGF0ZSBoYXMgY2hhbmdlZCwgcmVzdGFydGluZyBjaGVjayBzZXNzaW9uIGlmcmFtZTsgc2Vzc2lvbl9zdGF0ZTpcIiwgc2Vzc2lvbi5zZXNzaW9uX3N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmV2ZW50cy5fcmFpc2VVc2VyU2Vzc2lvbkNoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiU2Vzc2lvbk1vbml0b3IuX2NhbGxiYWNrOiBEaWZmZXJlbnQgc3ViamVjdCBzaWduZWQgaW50byBPUDpcIiwgc2Vzc2lvbi5zdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9jYWxsYmFjazogU3ViamVjdCBubyBsb25nZXIgc2lnbmVkIGludG8gT1BcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyYWlzZVVzZXJTaWduZWRPdXRFdmVudCkge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9jYWxsYmFjazogU2Vzc2lvbk1vbml0b3IuX2NhbGxiYWNrOyByYWlzaW5nIHNpZ25lZCBvdXQgZXZlbnRcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZXZlbnRzLl9yYWlzZVVzZXJTaWduZWRPdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlNlc3Npb25Nb25pdG9yLl9jYWxsYmFjazogRXJyb3IgY2FsbGluZyBxdWVyeUN1cnJlbnRTaWduaW5TZXNzaW9uOyByYWlzaW5nIHNpZ25lZCBvdXQgZXZlbnRcIiwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZXZlbnRzLl9yYWlzZVVzZXJTaWduZWRPdXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgVXJsVXRpbGl0eSB9IGZyb20gJy4vVXJsVXRpbGl0eS5qcyc7XG5pbXBvcnQgeyBTaWduaW5TdGF0ZSB9IGZyb20gJy4vU2lnbmluU3RhdGUuanMnO1xuXG5leHBvcnQgY2xhc3MgU2lnbmluUmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3Ioe1xuICAgICAgICAvLyBtYW5kYXRvcnlcbiAgICAgICAgdXJsLCBjbGllbnRfaWQsIHJlZGlyZWN0X3VyaSwgcmVzcG9uc2VfdHlwZSwgc2NvcGUsIGF1dGhvcml0eSxcbiAgICAgICAgLy8gb3B0aW9uYWxcbiAgICAgICAgZGF0YSwgcHJvbXB0LCBkaXNwbGF5LCBtYXhfYWdlLCB1aV9sb2NhbGVzLCBpZF90b2tlbl9oaW50LCBsb2dpbl9oaW50LCBhY3JfdmFsdWVzLCByZXNvdXJjZSwgcmVzcG9uc2VfbW9kZSxcbiAgICAgICAgcmVxdWVzdCwgcmVxdWVzdF91cmksIGV4dHJhUXVlcnlQYXJhbXMsXG4gICAgfSkge1xuICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiU2lnbmluUmVxdWVzdC5jdG9yOiBObyB1cmwgcGFzc2VkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJsXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2xpZW50X2lkKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTaWduaW5SZXF1ZXN0LmN0b3I6IE5vIGNsaWVudF9pZCBwYXNzZWRcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjbGllbnRfaWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZWRpcmVjdF91cmkpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gcmVkaXJlY3RfdXJpIHBhc3NlZFwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlZGlyZWN0X3VyaVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3BvbnNlX3R5cGUpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gcmVzcG9uc2VfdHlwZSBwYXNzZWRcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXNwb25zZV90eXBlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2NvcGUpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gc2NvcGUgcGFzc2VkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2NvcGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhdXRob3JpdHkpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25pblJlcXVlc3QuY3RvcjogTm8gYXV0aG9yaXR5IHBhc3NlZFwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImF1dGhvcml0eVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvaWRjID0gU2lnbmluUmVxdWVzdC5pc09pZGMocmVzcG9uc2VfdHlwZSk7XG4gICAgICAgIGxldCBjb2RlID0gU2lnbmluUmVxdWVzdC5pc0NvZGUocmVzcG9uc2VfdHlwZSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBuZXcgU2lnbmluU3RhdGUoeyBub25jZTogb2lkYywgZGF0YSwgY2xpZW50X2lkLCBhdXRob3JpdHksIHJlZGlyZWN0X3VyaSwgY29kZV92ZXJpZmllcjogY29kZSB9KTtcblxuICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcImNsaWVudF9pZFwiLCBjbGllbnRfaWQpO1xuICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcInJlZGlyZWN0X3VyaVwiLCByZWRpcmVjdF91cmkpO1xuICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcInJlc3BvbnNlX3R5cGVcIiwgcmVzcG9uc2VfdHlwZSk7XG4gICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwic2NvcGVcIiwgc2NvcGUpO1xuXG4gICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwic3RhdGVcIiwgdGhpcy5zdGF0ZS5pZCk7XG4gICAgICAgIGlmIChvaWRjKSB7XG4gICAgICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcIm5vbmNlXCIsIHRoaXMuc3RhdGUubm9uY2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgICB1cmwgPSBVcmxVdGlsaXR5LmFkZFF1ZXJ5UGFyYW0odXJsLCBcImNvZGVfY2hhbGxlbmdlXCIsIHRoaXMuc3RhdGUuY29kZV9jaGFsbGVuZ2UpO1xuICAgICAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwgXCJjb2RlX2NoYWxsZW5nZV9tZXRob2RcIiwgXCJTMjU2XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9wdGlvbmFsID0geyBwcm9tcHQsIGRpc3BsYXksIG1heF9hZ2UsIHVpX2xvY2FsZXMsIGlkX3Rva2VuX2hpbnQsIGxvZ2luX2hpbnQsIGFjcl92YWx1ZXMsIHJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0X3VyaSwgcmVzcG9uc2VfbW9kZSB9O1xuICAgICAgICBmb3IobGV0IGtleSBpbiBvcHRpb25hbCl7XG4gICAgICAgICAgICBpZiAob3B0aW9uYWxba2V5XSkge1xuICAgICAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIGtleSwgb3B0aW9uYWxba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IobGV0IGtleSBpbiBleHRyYVF1ZXJ5UGFyYW1zKXtcbiAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIGtleSwgZXh0cmFRdWVyeVBhcmFtc1trZXldKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzT2lkYyhyZXNwb25zZV90eXBlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZXNwb25zZV90eXBlLnNwbGl0KC9cXHMrL2cpLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gXCJpZF90b2tlblwiO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICEhKHJlc3VsdFswXSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzT0F1dGgocmVzcG9uc2VfdHlwZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2VfdHlwZS5zcGxpdCgvXFxzKy9nKS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gPT09IFwidG9rZW5cIjtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAhIShyZXN1bHRbMF0pO1xuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgaXNDb2RlKHJlc3BvbnNlX3R5cGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlc3BvbnNlX3R5cGUuc3BsaXQoL1xccysvZykuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtID09PSBcImNvZGVcIjtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAhIShyZXN1bHRbMF0pO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IFVybFV0aWxpdHkgfSBmcm9tICcuL1VybFV0aWxpdHkuanMnO1xuXG5jb25zdCBPaWRjU2NvcGUgPSBcIm9wZW5pZFwiO1xuXG5leHBvcnQgY2xhc3MgU2lnbmluUmVzcG9uc2Uge1xuICAgIGNvbnN0cnVjdG9yKHVybCwgZGVsaW1pdGVyID0gXCIjXCIpIHtcblxuICAgICAgICB2YXIgdmFsdWVzID0gVXJsVXRpbGl0eS5wYXJzZVVybEZyYWdtZW50KHVybCwgZGVsaW1pdGVyKTtcblxuICAgICAgICB0aGlzLmVycm9yID0gdmFsdWVzLmVycm9yO1xuICAgICAgICB0aGlzLmVycm9yX2Rlc2NyaXB0aW9uID0gdmFsdWVzLmVycm9yX2Rlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmVycm9yX3VyaSA9IHZhbHVlcy5lcnJvcl91cmk7XG5cbiAgICAgICAgdGhpcy5jb2RlID0gdmFsdWVzLmNvZGU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB2YWx1ZXMuc3RhdGU7XG4gICAgICAgIHRoaXMuaWRfdG9rZW4gPSB2YWx1ZXMuaWRfdG9rZW47XG4gICAgICAgIHRoaXMuc2Vzc2lvbl9zdGF0ZSA9IHZhbHVlcy5zZXNzaW9uX3N0YXRlO1xuICAgICAgICB0aGlzLmFjY2Vzc190b2tlbiA9IHZhbHVlcy5hY2Nlc3NfdG9rZW47XG4gICAgICAgIHRoaXMudG9rZW5fdHlwZSA9IHZhbHVlcy50b2tlbl90eXBlO1xuICAgICAgICB0aGlzLnNjb3BlID0gdmFsdWVzLnNjb3BlO1xuICAgICAgICB0aGlzLnByb2ZpbGUgPSB1bmRlZmluZWQ7IC8vIHdpbGwgYmUgc2V0IGZyb20gUmVzcG9uc2VWYWxpZGF0b3JcblxuICAgICAgICB0aGlzLmV4cGlyZXNfaW4gPSB2YWx1ZXMuZXhwaXJlc19pbjtcbiAgICB9XG5cbiAgICBnZXQgZXhwaXJlc19pbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwaXJlc19hdCkge1xuICAgICAgICAgICAgbGV0IG5vdyA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cGlyZXNfYXQgLSBub3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGV4cGlyZXNfaW4odmFsdWUpe1xuICAgICAgICBsZXQgZXhwaXJlc19pbiA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiBleHBpcmVzX2luID09PSAnbnVtYmVyJyAmJiBleHBpcmVzX2luID4gMCkge1xuICAgICAgICAgICAgbGV0IG5vdyA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKTtcbiAgICAgICAgICAgIHRoaXMuZXhwaXJlc19hdCA9IG5vdyArIGV4cGlyZXNfaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZXhwaXJlZCgpIHtcbiAgICAgICAgbGV0IGV4cGlyZXNfaW4gPSB0aGlzLmV4cGlyZXNfaW47XG4gICAgICAgIGlmIChleHBpcmVzX2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBleHBpcmVzX2luIDw9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgc2NvcGVzKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuc2NvcGUgfHwgXCJcIikuc3BsaXQoXCIgXCIpO1xuICAgIH1cblxuICAgIGdldCBpc09wZW5JZENvbm5lY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3Blcy5pbmRleE9mKE9pZGNTY29wZSkgPj0gMCB8fCAhIXRoaXMuaWRfdG9rZW47XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuL1N0YXRlLmpzJztcbmltcG9ydCB7IEpvc2VVdGlsIH0gZnJvbSAnLi9Kb3NlVXRpbC5qcyc7XG5pbXBvcnQgcmFuZG9tIGZyb20gJy4vcmFuZG9tLmpzJztcblxuZXhwb3J0IGNsYXNzIFNpZ25pblN0YXRlIGV4dGVuZHMgU3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKHtub25jZSwgYXV0aG9yaXR5LCBjbGllbnRfaWQsIHJlZGlyZWN0X3VyaSwgY29kZV92ZXJpZmllcn0gPSB7fSkge1xuICAgICAgICBzdXBlcihhcmd1bWVudHNbMF0pO1xuXG4gICAgICAgIGlmIChub25jZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5fbm9uY2UgPSByYW5kb20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub25jZSkge1xuICAgICAgICAgICAgdGhpcy5fbm9uY2UgPSBub25jZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlX3ZlcmlmaWVyID09PSB0cnVlKSB7XG4gICAgICAgICAgICAvLyByYW5kb20oKSBwcm9kdWNlcyAzMiBsZW5ndGhcbiAgICAgICAgICAgIHRoaXMuX2NvZGVfdmVyaWZpZXIgPSByYW5kb20oKSArIHJhbmRvbSgpICsgcmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29kZV92ZXJpZmllcikge1xuICAgICAgICAgICAgdGhpcy5fY29kZV92ZXJpZmllciA9IGNvZGVfdmVyaWZpZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmNvZGVfdmVyaWZpZXIpIHtcbiAgICAgICAgICAgIGxldCBoYXNoID0gSm9zZVV0aWwuaGFzaFN0cmluZyh0aGlzLmNvZGVfdmVyaWZpZXIsIFwiU0hBMjU2XCIpO1xuICAgICAgICAgICAgdGhpcy5fY29kZV9jaGFsbGVuZ2UgPSBKb3NlVXRpbC5oZXhUb0Jhc2U2NFVybChoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlZGlyZWN0X3VyaSA9IHJlZGlyZWN0X3VyaTtcbiAgICAgICAgdGhpcy5fYXV0aG9yaXR5ID0gYXV0aG9yaXR5O1xuICAgICAgICB0aGlzLl9jbGllbnRfaWQgPSBjbGllbnRfaWQ7XG4gICAgfVxuXG4gICAgZ2V0IG5vbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9uY2U7XG4gICAgfVxuICAgIGdldCBhdXRob3JpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRob3JpdHk7XG4gICAgfVxuICAgIGdldCBjbGllbnRfaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGllbnRfaWQ7XG4gICAgfVxuICAgIGdldCByZWRpcmVjdF91cmkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWRpcmVjdF91cmk7XG4gICAgfVxuICAgIGdldCBjb2RlX3ZlcmlmaWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29kZV92ZXJpZmllcjtcbiAgICB9XG4gICAgZ2V0IGNvZGVfY2hhbGxlbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29kZV9jaGFsbGVuZ2U7XG4gICAgfVxuXG4gICAgdG9TdG9yYWdlU3RyaW5nKCkge1xuICAgICAgICBMb2cuZGVidWcoXCJTaWduaW5TdGF0ZS50b1N0b3JhZ2VTdHJpbmdcIik7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgICAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgICAgICAgICAgY29kZV92ZXJpZmllcjogdGhpcy5jb2RlX3ZlcmlmaWVyLFxuICAgICAgICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLnJlZGlyZWN0X3VyaSxcbiAgICAgICAgICAgIGF1dGhvcml0eTogdGhpcy5hdXRob3JpdHksXG4gICAgICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50X2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tU3RvcmFnZVN0cmluZyhzdG9yYWdlU3RyaW5nKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIlNpZ25pblN0YXRlLmZyb21TdG9yYWdlU3RyaW5nXCIpO1xuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3RvcmFnZVN0cmluZyk7XG4gICAgICAgIHJldHVybiBuZXcgU2lnbmluU3RhdGUoZGF0YSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgVXJsVXRpbGl0eSB9IGZyb20gJy4vVXJsVXRpbGl0eS5qcyc7XG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4vU3RhdGUuanMnO1xuXG5leHBvcnQgY2xhc3MgU2lnbm91dFJlcXVlc3Qge1xuICAgIGNvbnN0cnVjdG9yKHt1cmwsIGlkX3Rva2VuX2hpbnQsIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSwgZGF0YX0pIHtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlNpZ25vdXRSZXF1ZXN0LmN0b3I6IE5vIHVybCBwYXNzZWRcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmxcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRfdG9rZW5faGludCkge1xuICAgICAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwgXCJpZF90b2tlbl9oaW50XCIsIGlkX3Rva2VuX2hpbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSkge1xuICAgICAgICAgICAgdXJsID0gVXJsVXRpbGl0eS5hZGRRdWVyeVBhcmFtKHVybCwgXCJwb3N0X2xvZ291dF9yZWRpcmVjdF91cmlcIiwgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpKTtcblxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gbmV3IFN0YXRlKHsgZGF0YSB9KTtcblxuICAgICAgICAgICAgICAgIHVybCA9IFVybFV0aWxpdHkuYWRkUXVlcnlQYXJhbSh1cmwsIFwic3RhdGVcIiwgdGhpcy5zdGF0ZS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVybCA9IHVybDtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBVcmxVdGlsaXR5IH0gZnJvbSAnLi9VcmxVdGlsaXR5LmpzJztcblxuZXhwb3J0IGNsYXNzIFNpZ25vdXRSZXNwb25zZSB7XG4gICAgY29uc3RydWN0b3IodXJsKSB7XG5cbiAgICAgICAgdmFyIHZhbHVlcyA9IFVybFV0aWxpdHkucGFyc2VVcmxGcmFnbWVudCh1cmwsIFwiP1wiKTtcblxuICAgICAgICB0aGlzLmVycm9yID0gdmFsdWVzLmVycm9yO1xuICAgICAgICB0aGlzLmVycm9yX2Rlc2NyaXB0aW9uID0gdmFsdWVzLmVycm9yX2Rlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmVycm9yX3VyaSA9IHZhbHVlcy5lcnJvcl91cmk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHZhbHVlcy5zdGF0ZTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBTaWxlbnRSZW5ld1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IodXNlck1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIgPSB1c2VyTWFuYWdlcjtcbiAgICB9XG5cbiAgICBzdGFydCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSB0aGlzLl90b2tlbkV4cGlyaW5nLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5ldmVudHMuYWRkQWNjZXNzVG9rZW5FeHBpcmluZyh0aGlzLl9jYWxsYmFjayk7XG5cbiAgICAgICAgICAgIC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGxvYWRpbmcgb2YgdGhlIHVzZXIgc28gdGhlIGV4cGlyaW5nIGV2ZW50cyBjYW4gYmUgaW5pdGlhbGl6ZWRcbiAgICAgICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLmdldFVzZXIoKS50aGVuKHVzZXI9PntcbiAgICAgICAgICAgICAgICAvLyBkZWxpYmVyYXRlIG5vcFxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyPT57XG4gICAgICAgICAgICAgICAgLy8gY2F0Y2ggdG8gc3VwcHJlc3MgZXJyb3JzIHNpbmNlIHdlJ3JlIGluIGEgY3RvclxuICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlNpbGVudFJlbmV3U2VydmljZS5zdGFydDogRXJyb3IgZnJvbSBnZXRVc2VyOlwiLCBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5fdXNlck1hbmFnZXIuZXZlbnRzLnJlbW92ZUFjY2Vzc1Rva2VuRXhwaXJpbmcodGhpcy5fY2FsbGJhY2spO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3Rva2VuRXhwaXJpbmcoKSB7XG4gICAgICAgIHRoaXMuX3VzZXJNYW5hZ2VyLnNpZ25pblNpbGVudCgpLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTaWxlbnRSZW5ld1NlcnZpY2UuX3Rva2VuRXhwaXJpbmc6IFNpbGVudCB0b2tlbiByZW5ld2FsIHN1Y2Nlc3NmdWxcIik7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJTaWxlbnRSZW5ld1NlcnZpY2UuX3Rva2VuRXhwaXJpbmc6IEVycm9yIGZyb20gc2lnbmluU2lsZW50OlwiLCBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLl91c2VyTWFuYWdlci5ldmVudHMuX3JhaXNlU2lsZW50UmVuZXdFcnJvcihlcnIpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5pbXBvcnQgcmFuZG9tIGZyb20gJy4vcmFuZG9tLmpzJztcblxuZXhwb3J0IGNsYXNzIFN0YXRlIHtcbiAgICBjb25zdHJ1Y3Rvcih7aWQsIGRhdGEsIGNyZWF0ZWR9ID0ge30pIHtcbiAgICAgICAgdGhpcy5faWQgPSBpZCB8fCByYW5kb20oKTtcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjcmVhdGVkID09PSAnbnVtYmVyJyAmJiBjcmVhdGVkID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlZCA9IGNyZWF0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVkID0gcGFyc2VJbnQoRGF0ZS5ub3coKSAvIDEwMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuICAgIGdldCBkYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG4gICAgZ2V0IGNyZWF0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVkO1xuICAgIH1cblxuICAgIHRvU3RvcmFnZVN0cmluZygpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiU3RhdGUudG9TdG9yYWdlU3RyaW5nXCIpO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICBjcmVhdGVkOiB0aGlzLmNyZWF0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21TdG9yYWdlU3RyaW5nKHN0b3JhZ2VTdHJpbmcpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiU3RhdGUuZnJvbVN0b3JhZ2VTdHJpbmdcIik7XG4gICAgICAgIHJldHVybiBuZXcgU3RhdGUoSlNPTi5wYXJzZShzdG9yYWdlU3RyaW5nKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNsZWFyU3RhbGVTdGF0ZShzdG9yYWdlLCBhZ2UpIHtcblxuICAgICAgICB2YXIgY3V0b2ZmID0gRGF0ZS5ub3coKSAvIDEwMDAgLSBhZ2U7XG5cbiAgICAgICAgcmV0dXJuIHN0b3JhZ2UuZ2V0QWxsS2V5cygpLnRoZW4oa2V5cyA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJTdGF0ZS5jbGVhclN0YWxlU3RhdGU6IGdvdCBrZXlzXCIsIGtleXMpO1xuXG4gICAgICAgICAgICB2YXIgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBwID0gc3RvcmFnZS5nZXQoa2V5KS50aGVuKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVtb3ZlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gU3RhdGUuZnJvbVN0b3JhZ2VTdHJpbmcoaXRlbSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogZ290IGl0ZW0gZnJvbSBrZXk6IFwiLCBrZXksIHN0YXRlLmNyZWF0ZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmNyZWF0ZWQgPD0gY3V0b2ZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJTdGF0ZS5jbGVhclN0YWxlU3RhdGU6IEVycm9yIHBhcnNpbmcgc3RhdGUgZm9yIGtleVwiLCBrZXksIGUubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogbm8gaXRlbSBpbiBzdG9yYWdlIGZvciBrZXk6IFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogcmVtb3ZlZCBpdGVtIGZvciBrZXk6IFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JhZ2UucmVtb3ZlKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlN0YXRlLmNsZWFyU3RhbGVTdGF0ZTogd2FpdGluZyBvbiBwcm9taXNlIGNvdW50OlwiLCBwcm9taXNlcy5sZW5ndGgpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi9HbG9iYWwuanMnO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL0V2ZW50LmpzJztcblxuY29uc3QgVGltZXJEdXJhdGlvbiA9IDU7IC8vIHNlY29uZHNcblxuZXhwb3J0IGNsYXNzIFRpbWVyIGV4dGVuZHMgRXZlbnQge1xuXG4gICAgY29uc3RydWN0b3IobmFtZSwgdGltZXIgPSBHbG9iYWwudGltZXIsIG5vd0Z1bmMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIobmFtZSk7XG4gICAgICAgIHRoaXMuX3RpbWVyID0gdGltZXI7XG5cbiAgICAgICAgaWYgKG5vd0Z1bmMpIHtcbiAgICAgICAgICAgIHRoaXMuX25vd0Z1bmMgPSBub3dGdW5jO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbm93RnVuYyA9ICgpID0+IERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG5vdygpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMuX25vd0Z1bmMoKSk7XG4gICAgfVxuXG4gICAgaW5pdChkdXJhdGlvbikge1xuICAgICAgICBpZiAoZHVyYXRpb24gPD0gMCkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSAxO1xuICAgICAgICB9XG4gICAgICAgIGR1cmF0aW9uID0gcGFyc2VJbnQoZHVyYXRpb24pO1xuXG4gICAgICAgIHZhciBleHBpcmF0aW9uID0gdGhpcy5ub3cgKyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuZXhwaXJhdGlvbiA9PT0gZXhwaXJhdGlvbiAmJiB0aGlzLl90aW1lckhhbmRsZSkge1xuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byByZWluaXRpYWxpemUgdG8gc2FtZSBleHBpcmF0aW9uLCBzbyBiYWlsIG91dFxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVGltZXIuaW5pdCB0aW1lciBcIiArIHRoaXMuX25hbWUgKyBcIiBza2lwcGluZyBpbml0aWFsaXphdGlvbiBzaW5jZSBhbHJlYWR5IGluaXRpYWxpemVkIGZvciBleHBpcmF0aW9uOlwiLCB0aGlzLmV4cGlyYXRpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYW5jZWwoKTtcblxuICAgICAgICBMb2cuZGVidWcoXCJUaW1lci5pbml0IHRpbWVyIFwiICsgdGhpcy5fbmFtZSArIFwiIGZvciBkdXJhdGlvbjpcIiwgZHVyYXRpb24pO1xuICAgICAgICB0aGlzLl9leHBpcmF0aW9uID0gZXhwaXJhdGlvbjtcblxuICAgICAgICAvLyB3ZSdyZSB1c2luZyBhIGZhaXJseSBzaG9ydCB0aW1lciBhbmQgdGhlbiBjaGVja2luZyB0aGUgZXhwaXJhdGlvbiBpbiB0aGVcbiAgICAgICAgLy8gY2FsbGJhY2sgdG8gaGFuZGxlIHNjZW5hcmlvcyB3aGVyZSB0aGUgYnJvd3NlciBkZXZpY2Ugc2xlZXBzLCBhbmQgdGhlblxuICAgICAgICAvLyB0aGUgdGltZXJzIGVuZCB1cCBnZXR0aW5nIGRlbGF5ZWQuXG4gICAgICAgIHZhciB0aW1lckR1cmF0aW9uID0gVGltZXJEdXJhdGlvbjtcbiAgICAgICAgaWYgKGR1cmF0aW9uIDwgdGltZXJEdXJhdGlvbikge1xuICAgICAgICAgICAgdGltZXJEdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RpbWVySGFuZGxlID0gdGhpcy5fdGltZXIuc2V0SW50ZXJ2YWwodGhpcy5fY2FsbGJhY2suYmluZCh0aGlzKSwgdGltZXJEdXJhdGlvbiAqIDEwMDApO1xuICAgIH1cbiAgICBcbiAgICBnZXQgZXhwaXJhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGlyYXRpb247XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICBpZiAodGhpcy5fdGltZXJIYW5kbGUpIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlRpbWVyLmNhbmNlbDogXCIsIHRoaXMuX25hbWUpO1xuICAgICAgICAgICAgdGhpcy5fdGltZXIuY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lckhhbmRsZSk7XG4gICAgICAgICAgICB0aGlzLl90aW1lckhhbmRsZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfY2FsbGJhY2soKSB7XG4gICAgICAgIHZhciBkaWZmID0gdGhpcy5fZXhwaXJhdGlvbiAtIHRoaXMubm93O1xuICAgICAgICBMb2cuZGVidWcoXCJUaW1lci5jYWxsYmFjazsgXCIgKyB0aGlzLl9uYW1lICsgXCIgdGltZXIgZXhwaXJlcyBpbjpcIiwgZGlmZik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2V4cGlyYXRpb24gPD0gdGhpcy5ub3cpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgICAgICBzdXBlci5yYWlzZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgSnNvblNlcnZpY2UgfSBmcm9tICcuL0pzb25TZXJ2aWNlLmpzJztcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4vTWV0YWRhdGFTZXJ2aWNlLmpzJztcbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuQ2xpZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncywgSnNvblNlcnZpY2VDdG9yID0gSnNvblNlcnZpY2UsIE1ldGFkYXRhU2VydmljZUN0b3IgPSBNZXRhZGF0YVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5DbGllbnQuY3RvcjogTm8gc2V0dGluZ3MgcGFzc2VkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0dGluZ3NcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLl9qc29uU2VydmljZSA9IG5ldyBKc29uU2VydmljZUN0b3IoKTtcbiAgICAgICAgdGhpcy5fbWV0YWRhdGFTZXJ2aWNlID0gbmV3IE1ldGFkYXRhU2VydmljZUN0b3IodGhpcy5fc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIGV4Y2hhbmdlQ29kZShhcmdzID0ge30pIHtcbiAgICAgICAgYXJncy5ncmFudF90eXBlID0gYXJncy5ncmFudF90eXBlIHx8IFwiYXV0aG9yaXphdGlvbl9jb2RlXCI7XG4gICAgICAgIGFyZ3MuY2xpZW50X2lkID0gYXJncy5jbGllbnRfaWQgfHwgdGhpcy5fc2V0dGluZ3MuY2xpZW50X2lkO1xuICAgICAgICBhcmdzLnJlZGlyZWN0X3VyaSA9IGFyZ3MucmVkaXJlY3RfdXJpIHx8IHRoaXMuX3NldHRpbmdzLnJlZGlyZWN0X3VyaTtcblxuICAgICAgICBpZiAoIWFyZ3MuY29kZSkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5DbGllbnQuZXhjaGFuZ2VDb2RlOiBObyBjb2RlIHBhc3NlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBIGNvZGUgaXMgcmVxdWlyZWRcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYXJncy5yZWRpcmVjdF91cmkpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuQ2xpZW50LmV4Y2hhbmdlQ29kZTogTm8gcmVkaXJlY3RfdXJpIHBhc3NlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBIHJlZGlyZWN0X3VyaSBpcyByZXF1aXJlZFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcmdzLmNvZGVfdmVyaWZpZXIpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlRva2VuQ2xpZW50LmV4Y2hhbmdlQ29kZTogTm8gY29kZV92ZXJpZmllciBwYXNzZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQSBjb2RlX3ZlcmlmaWVyIGlzIHJlcXVpcmVkXCIpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFyZ3MuY2xpZW50X2lkKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IE5vIGNsaWVudF9pZCBwYXNzZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQSBjbGllbnRfaWQgaXMgcmVxdWlyZWRcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRUb2tlbkVuZHBvaW50KGZhbHNlKS50aGVuKHVybCA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IFJlY2VpdmVkIHRva2VuIGVuZHBvaW50XCIpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fanNvblNlcnZpY2UucG9zdEZvcm0odXJsLCBhcmdzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZUNvZGU6IHJlc3BvbnNlIHJlY2VpdmVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBleGNoYW5nZVJlZnJlc2hUb2tlbihhcmdzID0ge30pIHtcbiAgICAgICAgYXJncy5ncmFudF90eXBlID0gYXJncy5ncmFudF90eXBlIHx8IFwicmVmcmVzaF90b2tlblwiO1xuICAgICAgICBhcmdzLmNsaWVudF9pZCA9IGFyZ3MuY2xpZW50X2lkIHx8IHRoaXMuX3NldHRpbmdzLmNsaWVudF9pZDtcblxuICAgICAgICBpZiAoIWFyZ3MucmVmcmVzaF90b2tlbikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5DbGllbnQuZXhjaGFuZ2VSZWZyZXNoVG9rZW46IE5vIHJlZnJlc2hfdG9rZW4gcGFzc2VkXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkEgcmVmcmVzaF90b2tlbiBpcyByZXF1aXJlZFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcmdzLmNsaWVudF9pZCkge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5DbGllbnQuZXhjaGFuZ2VSZWZyZXNoVG9rZW46IE5vIGNsaWVudF9pZCBwYXNzZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQSBjbGllbnRfaWQgaXMgcmVxdWlyZWRcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRUb2tlbkVuZHBvaW50KGZhbHNlKS50aGVuKHVybCA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlbkNsaWVudC5leGNoYW5nZVJlZnJlc2hUb2tlbjogUmVjZWl2ZWQgdG9rZW4gZW5kcG9pbnRcIik7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9qc29uU2VydmljZS5wb3N0Rm9ybSh1cmwsIGFyZ3MpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlRva2VuQ2xpZW50LmV4Y2hhbmdlUmVmcmVzaFRva2VuOiByZXNwb25zZSByZWNlaXZlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9NZXRhZGF0YVNlcnZpY2UuanMnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi9HbG9iYWwuanMnO1xuXG5jb25zdCBBY2Nlc3NUb2tlblR5cGVIaW50ID0gXCJhY2Nlc3NfdG9rZW5cIjtcbmNvbnN0IFJlZnJlc2hUb2tlblR5cGVIaW50ID0gXCJyZWZyZXNoX3Rva2VuXCI7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblJldm9jYXRpb25DbGllbnQge1xuICAgIGNvbnN0cnVjdG9yKHNldHRpbmdzLCBYTUxIdHRwUmVxdWVzdEN0b3IgPSBHbG9iYWwuWE1MSHR0cFJlcXVlc3QsIE1ldGFkYXRhU2VydmljZUN0b3IgPSBNZXRhZGF0YVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LmN0b3I6IE5vIHNldHRpbmdzIHByb3ZpZGVkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2V0dGluZ3MgcHJvdmlkZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5fWE1MSHR0cFJlcXVlc3RDdG9yID0gWE1MSHR0cFJlcXVlc3RDdG9yO1xuICAgICAgICB0aGlzLl9tZXRhZGF0YVNlcnZpY2UgPSBuZXcgTWV0YWRhdGFTZXJ2aWNlQ3Rvcih0aGlzLl9zZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcmV2b2tlKHRva2VuLCByZXF1aXJlZCwgdHlwZSA9IFwiYWNjZXNzX3Rva2VuXCIpIHtcbiAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgTG9nLmVycm9yKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZTogTm8gdG9rZW4gcHJvdmlkZWRcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyB0b2tlbiBwcm92aWRlZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSAhPT0gQWNjZXNzVG9rZW5UeXBlSGludCAmJiB0eXBlICE9IFJlZnJlc2hUb2tlblR5cGVIaW50KSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlblJldm9jYXRpb25DbGllbnQucmV2b2tlOiBJbnZhbGlkIHRva2VuIHR5cGVcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRva2VuIHR5cGUuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRSZXZvY2F0aW9uRW5kcG9pbnQoKS50aGVuKHVybCA9PiB7XG4gICAgICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJUb2tlblJldm9jYXRpb25DbGllbnQucmV2b2tlOiBSZXZvY2F0aW9uIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJldm9jYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBub3QgcmVxdWlyZWQsIHNvIGRvbid0IGVycm9yIGFuZCBqdXN0IHJldHVyblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZTogUmV2b2tpbmcgXCIgKyB0eXBlKTtcbiAgICAgICAgICAgIHZhciBjbGllbnRfaWQgPSB0aGlzLl9zZXR0aW5ncy5jbGllbnRfaWQ7XG4gICAgICAgICAgICB2YXIgY2xpZW50X3NlY3JldCA9IHRoaXMuX3NldHRpbmdzLmNsaWVudF9zZWNyZXQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmV2b2tlKHVybCwgY2xpZW50X2lkLCBjbGllbnRfc2VjcmV0LCB0b2tlbiwgdHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9yZXZva2UodXJsLCBjbGllbnRfaWQsIGNsaWVudF9zZWNyZXQsIHRva2VuLCB0eXBlKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgICAgICAgdmFyIHhociA9IG5ldyB0aGlzLl9YTUxIdHRwUmVxdWVzdEN0b3IoKTtcbiAgICAgICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCB1cmwpO1xuXG4gICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlRva2VuUmV2b2NhdGlvbkNsaWVudC5yZXZva2U6IEhUVFAgcmVzcG9uc2UgcmVjZWl2ZWQsIHN0YXR1c1wiLCB4aHIuc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KEVycm9yKHhoci5zdGF0dXNUZXh0ICsgXCIgKFwiICsgeGhyLnN0YXR1cyArIFwiKVwiKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHhoci5vbmVycm9yID0gKCkgPT4geyBcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJUb2tlblJldm9jYXRpb25DbGllbnQucmV2b2tlOiBOZXR3b3JrIEVycm9yLlwiKVxuICAgICAgICAgICAgICAgIHJlamVjdChcIk5ldHdvcmsgRXJyb3JcIik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YXIgYm9keSA9IFwiY2xpZW50X2lkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudF9pZCk7XG4gICAgICAgICAgICBpZiAoY2xpZW50X3NlY3JldCkge1xuICAgICAgICAgICAgICAgIGJvZHkgKz0gXCImY2xpZW50X3NlY3JldD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChjbGllbnRfc2VjcmV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJvZHkgKz0gXCImdG9rZW5fdHlwZV9oaW50PVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHR5cGUpO1xuICAgICAgICAgICAgYm9keSArPSBcIiZ0b2tlbj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbik7XG5cbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpO1xuICAgICAgICAgICAgeGhyLnNlbmQoYm9keSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vR2xvYmFsLmpzJztcblxuZXhwb3J0IGNsYXNzIFVybFV0aWxpdHkge1xuICAgIHN0YXRpYyBhZGRRdWVyeVBhcmFtKHVybCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgICAgICB1cmwgKz0gXCI/XCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXJsW3VybC5sZW5ndGggLSAxXSAhPT0gXCI/XCIpIHtcbiAgICAgICAgICAgIHVybCArPSBcIiZcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybCArPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG4gICAgICAgIHVybCArPSBcIj1cIjtcbiAgICAgICAgdXJsICs9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcGFyc2VVcmxGcmFnbWVudCh2YWx1ZSwgZGVsaW1pdGVyID0gXCIjXCIsIGdsb2JhbCA9IEdsb2JhbCkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyl7XG4gICAgICAgICAgICB2YWx1ZSA9IGdsb2JhbC5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IHZhbHVlLmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHIoaWR4ICsgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVsaW1pdGVyID09PSBcIj9cIikge1xuICAgICAgICAgICAgLy8gaWYgd2UncmUgZG9pbmcgcXVlcnksIHRoZW4gc3RyaXAgb2ZmIGhhc2ggZnJhZ21lbnQgYmVmb3JlIHdlIHBhcnNlXG4gICAgICAgICAgICBpZHggPSB2YWx1ZS5pbmRleE9mKCcjJyk7XG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCBpZHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHBhcmFtcyA9IHt9LFxuICAgICAgICAgICAgcmVnZXggPSAvKFteJj1dKyk9KFteJl0qKS9nLFxuICAgICAgICAgICAgbTtcblxuICAgICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICAgIHdoaWxlIChtID0gcmVnZXguZXhlYyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQobVsxXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KG1bMl0pO1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIrKyA+IDUwKSB7XG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVXJsVXRpbGl0eS5wYXJzZVVybEZyYWdtZW50OiByZXNwb25zZSBleGNlZWRlZCBleHBlY3RlZCBudW1iZXIgb2YgcGFyYW1ldGVyc1wiLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFwiUmVzcG9uc2UgZXhjZWVkZWQgZXhwZWN0ZWQgbnVtYmVyIG9mIHBhcmFtZXRlcnNcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBwcm9wIGluIHBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyIHtcbiAgICBjb25zdHJ1Y3Rvcih7aWRfdG9rZW4sIHNlc3Npb25fc3RhdGUsIGFjY2Vzc190b2tlbiwgcmVmcmVzaF90b2tlbiwgdG9rZW5fdHlwZSwgc2NvcGUsIHByb2ZpbGUsIGV4cGlyZXNfYXQsIHN0YXRlfSkge1xuICAgICAgICB0aGlzLmlkX3Rva2VuID0gaWRfdG9rZW47XG4gICAgICAgIHRoaXMuc2Vzc2lvbl9zdGF0ZSA9IHNlc3Npb25fc3RhdGU7XG4gICAgICAgIHRoaXMuYWNjZXNzX3Rva2VuID0gYWNjZXNzX3Rva2VuO1xuICAgICAgICB0aGlzLnJlZnJlc2hfdG9rZW4gPSByZWZyZXNoX3Rva2VuO1xuICAgICAgICB0aGlzLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlO1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMucHJvZmlsZSA9IHByb2ZpbGU7XG4gICAgICAgIHRoaXMuZXhwaXJlc19hdCA9IGV4cGlyZXNfYXQ7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZXhwaXJlc19pbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwaXJlc19hdCkge1xuICAgICAgICAgICAgbGV0IG5vdyA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cGlyZXNfYXQgLSBub3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGV4cGlyZXNfaW4odmFsdWUpIHtcbiAgICAgICAgbGV0IGV4cGlyZXNfaW4gPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwaXJlc19pbiA9PT0gJ251bWJlcicgJiYgZXhwaXJlc19pbiA+IDApIHtcbiAgICAgICAgICAgIGxldCBub3cgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCk7XG4gICAgICAgICAgICB0aGlzLmV4cGlyZXNfYXQgPSBub3cgKyBleHBpcmVzX2luO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGV4cGlyZWQoKSB7XG4gICAgICAgIGxldCBleHBpcmVzX2luID0gdGhpcy5leHBpcmVzX2luO1xuICAgICAgICBpZiAoZXhwaXJlc19pbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwaXJlc19pbiA8PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IHNjb3BlcygpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnNjb3BlIHx8IFwiXCIpLnNwbGl0KFwiIFwiKTtcbiAgICB9XG5cbiAgICB0b1N0b3JhZ2VTdHJpbmcoKSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIlVzZXIudG9TdG9yYWdlU3RyaW5nXCIpO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgaWRfdG9rZW46IHRoaXMuaWRfdG9rZW4sXG4gICAgICAgICAgICBzZXNzaW9uX3N0YXRlOiB0aGlzLnNlc3Npb25fc3RhdGUsXG4gICAgICAgICAgICBhY2Nlc3NfdG9rZW46IHRoaXMuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy5yZWZyZXNoX3Rva2VuLFxuICAgICAgICAgICAgdG9rZW5fdHlwZTogdGhpcy50b2tlbl90eXBlLFxuICAgICAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUsXG4gICAgICAgICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUsXG4gICAgICAgICAgICBleHBpcmVzX2F0OiB0aGlzLmV4cGlyZXNfYXRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21TdG9yYWdlU3RyaW5nKHN0b3JhZ2VTdHJpbmcpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlci5mcm9tU3RvcmFnZVN0cmluZ1wiKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyKEpTT04ucGFyc2Uoc3RvcmFnZVN0cmluZykpO1xuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IEpzb25TZXJ2aWNlIH0gZnJvbSAnLi9Kc29uU2VydmljZS5qcyc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuL01ldGFkYXRhU2VydmljZS5qcyc7XG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBVc2VySW5mb1NlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHNldHRpbmdzLCBKc29uU2VydmljZUN0b3IgPSBKc29uU2VydmljZSwgTWV0YWRhdGFTZXJ2aWNlQ3RvciA9IE1ldGFkYXRhU2VydmljZSkge1xuICAgICAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VySW5mb1NlcnZpY2UuY3RvcjogTm8gc2V0dGluZ3MgcGFzc2VkXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0dGluZ3NcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLl9qc29uU2VydmljZSA9IG5ldyBKc29uU2VydmljZUN0b3IoKTtcbiAgICAgICAgdGhpcy5fbWV0YWRhdGFTZXJ2aWNlID0gbmV3IE1ldGFkYXRhU2VydmljZUN0b3IodGhpcy5fc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIGdldENsYWltcyh0b2tlbikge1xuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VySW5mb1NlcnZpY2UuZ2V0Q2xhaW1zOiBObyB0b2tlbiBwYXNzZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQSB0b2tlbiBpcyByZXF1aXJlZFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YWRhdGFTZXJ2aWNlLmdldFVzZXJJbmZvRW5kcG9pbnQoKS50aGVuKHVybCA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VySW5mb1NlcnZpY2UuZ2V0Q2xhaW1zOiByZWNlaXZlZCB1c2VyaW5mbyB1cmxcIiwgdXJsKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25TZXJ2aWNlLmdldEpzb24odXJsLCB0b2tlbikudGhlbihjbGFpbXMgPT4ge1xuICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJJbmZvU2VydmljZS5nZXRDbGFpbXM6IGNsYWltcyByZWNlaXZlZFwiLCBjbGFpbXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGFpbXM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IChjKSBCcm9jayBBbGxlbiAmIERvbWluaWNrIEJhaWVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gU2VlIExJQ0VOU0UgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cblxuaW1wb3J0IHsgTG9nIH0gZnJvbSAnLi9Mb2cuanMnO1xuaW1wb3J0IHsgT2lkY0NsaWVudCB9IGZyb20gJy4vT2lkY0NsaWVudC5qcyc7XG5pbXBvcnQgeyBVc2VyTWFuYWdlclNldHRpbmdzIH0gZnJvbSAnLi9Vc2VyTWFuYWdlclNldHRpbmdzLmpzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL1VzZXIuanMnO1xuaW1wb3J0IHsgVXNlck1hbmFnZXJFdmVudHMgfSBmcm9tICcuL1VzZXJNYW5hZ2VyRXZlbnRzLmpzJztcbmltcG9ydCB7IFNpbGVudFJlbmV3U2VydmljZSB9IGZyb20gJy4vU2lsZW50UmVuZXdTZXJ2aWNlLmpzJztcbmltcG9ydCB7IFNlc3Npb25Nb25pdG9yIH0gZnJvbSAnLi9TZXNzaW9uTW9uaXRvci5qcyc7XG5pbXBvcnQgeyBUb2tlblJldm9jYXRpb25DbGllbnQgfSBmcm9tICcuL1Rva2VuUmV2b2NhdGlvbkNsaWVudC5qcyc7XG5pbXBvcnQgeyBUb2tlbkNsaWVudCB9IGZyb20gJy4vVG9rZW5DbGllbnQuanMnO1xuaW1wb3J0IHsgSm9zZVV0aWwgfSBmcm9tICcuL0pvc2VVdGlsLmpzJztcblxuXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZXIgZXh0ZW5kcyBPaWRjQ2xpZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncyA9IHt9LFxuICAgICAgICBTaWxlbnRSZW5ld1NlcnZpY2VDdG9yID0gU2lsZW50UmVuZXdTZXJ2aWNlLFxuICAgICAgICBTZXNzaW9uTW9uaXRvckN0b3IgPSBTZXNzaW9uTW9uaXRvcixcbiAgICAgICAgVG9rZW5SZXZvY2F0aW9uQ2xpZW50Q3RvciA9IFRva2VuUmV2b2NhdGlvbkNsaWVudCxcbiAgICAgICAgVG9rZW5DbGllbnRDdG9yID0gVG9rZW5DbGllbnQsXG4gICAgICAgIGpvc2VVdGlsID0gSm9zZVV0aWxcbiAgICApIHtcblxuICAgICAgICBpZiAoIShzZXR0aW5ncyBpbnN0YW5jZW9mIFVzZXJNYW5hZ2VyU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICBzZXR0aW5ncyA9IG5ldyBVc2VyTWFuYWdlclNldHRpbmdzKHNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlcihzZXR0aW5ncyk7XG5cbiAgICAgICAgdGhpcy5fZXZlbnRzID0gbmV3IFVzZXJNYW5hZ2VyRXZlbnRzKHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdTZXJ2aWNlID0gbmV3IFNpbGVudFJlbmV3U2VydmljZUN0b3IodGhpcyk7XG5cbiAgICAgICAgLy8gb3JkZXIgaXMgaW1wb3J0YW50IGZvciB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM7IHRoZXNlIHNlcnZpY2VzIGRlcGVuZCB1cG9uIHRoZSBldmVudHMuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmF1dG9tYXRpY1NpbGVudFJlbmV3KSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5jdG9yOiBhdXRvbWF0aWNTaWxlbnRSZW5ldyBpcyBjb25maWd1cmVkLCBzZXR0aW5nIHVwIHNpbGVudCByZW5ld1wiKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTaWxlbnRSZW5ldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubW9uaXRvclNlc3Npb24pIHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLmN0b3I6IG1vbml0b3JTZXNzaW9uIGlzIGNvbmZpZ3VyZWQsIHNldHRpbmcgdXAgc2Vzc2lvbiBtb25pdG9yXCIpO1xuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbk1vbml0b3IgPSBuZXcgU2Vzc2lvbk1vbml0b3JDdG9yKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdG9rZW5SZXZvY2F0aW9uQ2xpZW50ID0gbmV3IFRva2VuUmV2b2NhdGlvbkNsaWVudEN0b3IodGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLl90b2tlbkNsaWVudCA9IG5ldyBUb2tlbkNsaWVudEN0b3IodGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLl9qb3NlVXRpbCA9IGpvc2VVdGlsO1xuICAgIH1cblxuICAgIGdldCBfcmVkaXJlY3ROYXZpZ2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnJlZGlyZWN0TmF2aWdhdG9yO1xuICAgIH1cbiAgICBnZXQgX3BvcHVwTmF2aWdhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5wb3B1cE5hdmlnYXRvcjtcbiAgICB9XG4gICAgZ2V0IF9pZnJhbWVOYXZpZ2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmlmcmFtZU5hdmlnYXRvcjtcbiAgICB9XG4gICAgZ2V0IF91c2VyU3RvcmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnVzZXJTdG9yZTtcbiAgICB9XG5cbiAgICBnZXQgZXZlbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICAgIH1cblxuICAgIGdldFVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIuZ2V0VXNlcjogdXNlciBsb2FkZWRcIik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMubG9hZCh1c2VyLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIuZ2V0VXNlcjogdXNlciBub3QgZm91bmQgaW4gc3RvcmFnZVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVVc2VyKG51bGwpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5yZW1vdmVVc2VyOiB1c2VyIHJlbW92ZWQgZnJvbSBzdG9yYWdlXCIpO1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLnVubG9hZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaWduaW5SZWRpcmVjdChhcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5TdGFydChhcmdzLCB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvcikudGhlbigoKT0+e1xuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5SZWRpcmVjdDogc3VjY2Vzc2Z1bFwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNpZ25pblJlZGlyZWN0Q2FsbGJhY2sodXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5FbmQodXJsIHx8IHRoaXMuX3JlZGlyZWN0TmF2aWdhdG9yLnVybCkudGhlbih1c2VyID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXIucHJvZmlsZSAmJiB1c2VyLnByb2ZpbGUuc3ViKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5pbmZvKFwiVXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3RDYWxsYmFjazogc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5SZWRpcmVjdENhbGxiYWNrOiBubyBzdWJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnbmluUG9wdXAoYXJncyA9IHt9KSB7XG4gICAgICAgIGxldCB1cmwgPSBhcmdzLnJlZGlyZWN0X3VyaSB8fCB0aGlzLnNldHRpbmdzLnBvcHVwX3JlZGlyZWN0X3VyaSB8fCB0aGlzLnNldHRpbmdzLnJlZGlyZWN0X3VyaTtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwOiBObyBwb3B1cF9yZWRpcmVjdF91cmkgb3IgcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIik7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm8gcG9wdXBfcmVkaXJlY3RfdXJpIG9yIHJlZGlyZWN0X3VyaSBjb25maWd1cmVkXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MucmVkaXJlY3RfdXJpID0gdXJsO1xuICAgICAgICBhcmdzLmRpc3BsYXkgPSBcInBvcHVwXCI7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbihhcmdzLCB0aGlzLl9wb3B1cE5hdmlnYXRvciwge1xuICAgICAgICAgICAgc3RhcnRVcmw6IHVybCxcbiAgICAgICAgICAgIHBvcHVwV2luZG93RmVhdHVyZXM6IGFyZ3MucG9wdXBXaW5kb3dGZWF0dXJlcyB8fCB0aGlzLnNldHRpbmdzLnBvcHVwV2luZG93RmVhdHVyZXMsXG4gICAgICAgICAgICBwb3B1cFdpbmRvd1RhcmdldDogYXJncy5wb3B1cFdpbmRvd1RhcmdldCB8fCB0aGlzLnNldHRpbmdzLnBvcHVwV2luZG93VGFyZ2V0XG4gICAgICAgIH0pLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyLnByb2ZpbGUgJiYgdXNlci5wcm9maWxlLnN1Yikge1xuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwOiBzaWduaW5Qb3B1cCBzdWNjZXNzZnVsLCBzaWduZWQgaW4gc3ViOiBcIiwgdXNlci5wcm9maWxlLnN1Yik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwOiBubyBzdWJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNpZ25pblBvcHVwQ2FsbGJhY2sodXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5DYWxsYmFjayh1cmwsIHRoaXMuX3BvcHVwTmF2aWdhdG9yKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlci5wcm9maWxlICYmIHVzZXIucHJvZmlsZS5zdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5Qb3B1cENhbGxiYWNrOiBzdWNjZXNzZnVsLCBzaWduZWQgaW4gc3ViOiBcIiwgdXNlci5wcm9maWxlLnN1Yik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwQ2FsbGJhY2s6IG5vIHN1YlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9KS5jYXRjaChlcnI9PntcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLnNpZ25pblBvcHVwQ2FsbGJhY2sgZXJyb3I6IFwiICsgZXJyICYmIGVyci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnbmluU2lsZW50KGFyZ3MgPSB7fSkge1xuICAgICAgICAvLyBmaXJzdCBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIHJlZnJlc2ggdG9rZW4sIG9yIG5lZWQgdG8gdXNlIGlmcmFtZVxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFVzZXIoKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIgJiYgdXNlci5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgICAgICAgICAgYXJncy5yZWZyZXNoX3Rva2VuID0gdXNlci5yZWZyZXNoX3Rva2VuO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VSZWZyZXNoVG9rZW4oYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcmdzLmlkX3Rva2VuX2hpbnQgPSBhcmdzLmlkX3Rva2VuX2hpbnQgfHwgKHRoaXMuc2V0dGluZ3MuaW5jbHVkZUlkVG9rZW5JblNpbGVudFJlbmV3ICYmIHVzZXIgJiYgdXNlci5pZF90b2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pblNpbGVudElmcmFtZShhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3VzZVJlZnJlc2hUb2tlbihhcmdzID0ge30pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuQ2xpZW50LmV4Y2hhbmdlUmVmcmVzaFRva2VuKGFyZ3MpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuX3VzZVJlZnJlc2hUb2tlbjogTm8gcmVzcG9uc2UgcmV0dXJuZWQgZnJvbSB0b2tlbiBlbmRwb2ludFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXCJObyByZXNwb25zZSByZXR1cm5lZCBmcm9tIHRva2VuIGVuZHBvaW50XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWNjZXNzX3Rva2VuKSB7XG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuX3VzZVJlZnJlc2hUb2tlbjogTm8gYWNjZXNzIHRva2VuIHJldHVybmVkIGZyb20gdG9rZW4gZW5kcG9pbnRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwiTm8gYWNjZXNzIHRva2VuIHJldHVybmVkIGZyb20gdG9rZW4gZW5kcG9pbnRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkVG9rZW5WYWxpZGF0aW9uID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkVG9rZW5WYWxpZGF0aW9uID0gdGhpcy5fdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuKHVzZXIucHJvZmlsZSwgcmVzdWx0LmlkX3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpZFRva2VuVmFsaWRhdGlvbi50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl91c2VSZWZyZXNoVG9rZW46IHJlZnJlc2ggdG9rZW4gcmVzcG9uc2Ugc3VjY2Vzc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gcmVzdWx0LmFjY2Vzc190b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIucmVmcmVzaF90b2tlbiA9IHJlc3VsdC5yZWZyZXNoX3Rva2VuIHx8IHVzZXIucmVmcmVzaF90b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuZXhwaXJlc19pbiA9IHJlc3VsdC5leHBpcmVzX2luO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVVzZXIodXNlcikudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50cy5sb2FkKHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW4ocHJvZmlsZSwgaWRfdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFkYXRhU2VydmljZS5nZXRJc3N1ZXIoKS50aGVuKGlzc3VlciA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fam9zZVV0aWwudmFsaWRhdGVKd3RBdHRyaWJ1dGVzKGlkX3Rva2VuLCBpc3N1ZXIsIHRoaXMuX3NldHRpbmdzLmNsaWVudF9pZCwgdGhpcy5fc2V0dGluZ3MuY2xvY2tTa2V3KS50aGVuKHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5fdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuOiBGYWlsZWQgdG8gdmFsaWRhdGUgaWRfdG9rZW5cIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGYWlsZWQgdG8gdmFsaWRhdGUgaWRfdG9rZW5cIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5zdWIgIT09IHByb2ZpbGUuc3ViKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW46IHN1YiBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBjdXJyZW50IHN1YlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcInN1YiBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBjdXJyZW50IHN1YlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmF1dGhfdGltZSAmJiBwYXlsb2FkLmF1dGhfdGltZSAhPT0gcHJvZmlsZS5hdXRoX3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmVycm9yKFwiVXNlck1hbmFnZXIuX3ZhbGlkYXRlSWRUb2tlbkZyb21Ub2tlblJlZnJlc2hUb2tlbjogYXV0aF90aW1lIGluIGlkX3Rva2VuIGRvZXMgbm90IG1hdGNoIG9yaWdpbmFsIGF1dGhfdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImF1dGhfdGltZSBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhdXRoX3RpbWVcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5henAgJiYgcGF5bG9hZC5henAgIT09IHByb2ZpbGUuYXpwKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLl92YWxpZGF0ZUlkVG9rZW5Gcm9tVG9rZW5SZWZyZXNoVG9rZW46IGF6cCBpbiBpZF90b2tlbiBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCBhenBcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJhenAgaW4gaWRfdG9rZW4gZG9lcyBub3QgbWF0Y2ggb3JpZ2luYWwgYXpwXCIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmF6cCAmJiBwcm9maWxlLmF6cCkge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5fdmFsaWRhdGVJZFRva2VuRnJvbVRva2VuUmVmcmVzaFRva2VuOiBhenAgbm90IGluIGlkX3Rva2VuLCBidXQgcHJlc2VudCBpbiBvcmlnaW5hbCBpZF90b2tlblwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcImF6cCBub3QgaW4gaWRfdG9rZW4sIGJ1dCBwcmVzZW50IGluIG9yaWdpbmFsIGlkX3Rva2VuXCIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIF9zaWduaW5TaWxlbnRJZnJhbWUoYXJncyA9IHt9KSB7XG4gICAgICAgIGxldCB1cmwgPSBhcmdzLnJlZGlyZWN0X3VyaSB8fCB0aGlzLnNldHRpbmdzLnNpbGVudF9yZWRpcmVjdF91cmk7XG4gICAgICAgIGlmICghdXJsKSB7XG4gICAgICAgICAgICBMb2cuZXJyb3IoXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnQ6IE5vIHNpbGVudF9yZWRpcmVjdF91cmkgY29uZmlndXJlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJObyBzaWxlbnRfcmVkaXJlY3RfdXJpIGNvbmZpZ3VyZWRcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5yZWRpcmVjdF91cmkgPSB1cmw7XG4gICAgICAgIGFyZ3MucHJvbXB0ID0gYXJncy5wcm9tcHQgfHwgXCJub25lXCI7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbihhcmdzLCB0aGlzLl9pZnJhbWVOYXZpZ2F0b3IsIHtcbiAgICAgICAgICAgIHN0YXJ0VXJsOiB1cmwsXG4gICAgICAgICAgICBzaWxlbnRSZXF1ZXN0VGltZW91dDogYXJncy5zaWxlbnRSZXF1ZXN0VGltZW91dCB8fCB0aGlzLnNldHRpbmdzLnNpbGVudFJlcXVlc3RUaW1lb3V0XG4gICAgICAgIH0pLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyLnByb2ZpbGUgJiYgdXNlci5wcm9maWxlLnN1Yikge1xuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25pblNpbGVudDogc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnQ6IG5vIHN1YlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaWduaW5TaWxlbnRDYWxsYmFjayh1cmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pbkNhbGxiYWNrKHVybCwgdGhpcy5faWZyYW1lTmF2aWdhdG9yKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlci5wcm9maWxlICYmIHVzZXIucHJvZmlsZS5zdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjazogc3VjY2Vzc2Z1bCwgc2lnbmVkIGluIHN1YjogXCIsIHVzZXIucHJvZmlsZS5zdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWduaW5TaWxlbnRDYWxsYmFjazogbm8gc3ViXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHF1ZXJ5U2Vzc2lvblN0YXR1cyhhcmdzID0ge30pIHtcbiAgICAgICAgbGV0IHVybCA9IGFyZ3MucmVkaXJlY3RfdXJpIHx8IHRoaXMuc2V0dGluZ3Muc2lsZW50X3JlZGlyZWN0X3VyaTtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIExvZy5lcnJvcihcIlVzZXJNYW5hZ2VyLnF1ZXJ5U2Vzc2lvblN0YXR1czogTm8gc2lsZW50X3JlZGlyZWN0X3VyaSBjb25maWd1cmVkXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk5vIHNpbGVudF9yZWRpcmVjdF91cmkgY29uZmlndXJlZFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzLnJlZGlyZWN0X3VyaSA9IHVybDtcbiAgICAgICAgYXJncy5wcm9tcHQgPSBcIm5vbmVcIjtcbiAgICAgICAgYXJncy5yZXNwb25zZV90eXBlID0gYXJncy5yZXNwb25zZV90eXBlIHx8IHRoaXMuc2V0dGluZ3MucXVlcnlfc3RhdHVzX3Jlc3BvbnNlX3R5cGU7XG4gICAgICAgIGFyZ3Muc2NvcGUgPSBcIm9wZW5pZFwiO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5TdGFydChhcmdzLCB0aGlzLl9pZnJhbWVOYXZpZ2F0b3IsIHtcbiAgICAgICAgICAgIHN0YXJ0VXJsOiB1cmwsXG4gICAgICAgICAgICBzaWxlbnRSZXF1ZXN0VGltZW91dDogYXJncy5zaWxlbnRSZXF1ZXN0VGltZW91dCB8fCB0aGlzLnNldHRpbmdzLnNpbGVudFJlcXVlc3RUaW1lb3V0XG4gICAgICAgIH0pLnRoZW4obmF2UmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NpZ25pblJlc3BvbnNlKG5hdlJlc3BvbnNlLnVybCkudGhlbihzaWduaW5SZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIucXVlcnlTZXNzaW9uU3RhdHVzOiBnb3Qgc2lnbmluIHJlc3BvbnNlXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNpZ25pblJlc3BvbnNlLnNlc3Npb25fc3RhdGUgJiYgc2lnbmluUmVzcG9uc2UucHJvZmlsZS5zdWIpIHtcbiAgICAgICAgICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5xdWVyeVNlc3Npb25TdGF0dXM6IHF1ZXJ5U2Vzc2lvblN0YXR1cyBzdWNjZXNzIGZvciBzdWI6IFwiLCAgc2lnbmluUmVzcG9uc2UucHJvZmlsZS5zdWIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9zdGF0ZTogc2lnbmluUmVzcG9uc2Uuc2Vzc2lvbl9zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yjogc2lnbmluUmVzcG9uc2UucHJvZmlsZS5zdWIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWQ6IHNpZ25pblJlc3BvbnNlLnByb2ZpbGUuc2lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBMb2cuaW5mbyhcInF1ZXJ5U2Vzc2lvblN0YXR1cyBzdWNjZXNzZnVsLCB1c2VyIG5vdCBhdXRoZW50aWNhdGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfc2lnbmluKGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zID0ge30pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25pblN0YXJ0KGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zKS50aGVuKG5hdlJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaWduaW5FbmQobmF2UmVzcG9uc2UudXJsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9zaWduaW5TdGFydChhcmdzLCBuYXZpZ2F0b3IsIG5hdmlnYXRvclBhcmFtcyA9IHt9KSB7XG5cbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5wcmVwYXJlKG5hdmlnYXRvclBhcmFtcykudGhlbihoYW5kbGUgPT4ge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pblN0YXJ0OiBnb3QgbmF2aWdhdG9yIHdpbmRvdyBoYW5kbGVcIik7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNpZ25pblJlcXVlc3QoYXJncykudGhlbihzaWduaW5SZXF1ZXN0ID0+IHtcbiAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbmluU3RhcnQ6IGdvdCBzaWduaW4gcmVxdWVzdFwiKTtcblxuICAgICAgICAgICAgICAgIG5hdmlnYXRvclBhcmFtcy51cmwgPSBzaWduaW5SZXF1ZXN0LnVybDtcbiAgICAgICAgICAgICAgICBuYXZpZ2F0b3JQYXJhbXMuaWQgPSBzaWduaW5SZXF1ZXN0LnN0YXRlLmlkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5uYXZpZ2F0ZShuYXZpZ2F0b3JQYXJhbXMpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlLmNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWduaW5TdGFydDogRXJyb3IgYWZ0ZXIgcHJlcGFyaW5nIG5hdmlnYXRvciwgY2xvc2luZyBuYXZpZ2F0b3Igd2luZG93XCIpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfc2lnbmluRW5kKHVybCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2lnbmluUmVzcG9uc2UodXJsKS50aGVuKHNpZ25pblJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWduaW5FbmQ6IGdvdCBzaWduaW4gcmVzcG9uc2VcIik7XG5cbiAgICAgICAgICAgIGxldCB1c2VyID0gbmV3IFVzZXIoc2lnbmluUmVzcG9uc2UpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVVzZXIodXNlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pbkVuZDogdXNlciBzdG9yZWRcIik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMubG9hZCh1c2VyKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfc2lnbmluQ2FsbGJhY2sodXJsLCBuYXZpZ2F0b3IpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25pbkNhbGxiYWNrXCIpO1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNhbGxiYWNrKHVybCk7XG4gICAgfVxuXG4gICAgc2lnbm91dFJlZGlyZWN0KGFyZ3MgPSB7fSkge1xuICAgICAgICBsZXQgcG9zdExvZ291dFJlZGlyZWN0VXJpID0gYXJncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5zZXR0aW5ncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmk7XG4gICAgICAgIGlmIChwb3N0TG9nb3V0UmVkaXJlY3RVcmkpe1xuICAgICAgICAgICAgYXJncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgPSBwb3N0TG9nb3V0UmVkaXJlY3RVcmk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25vdXRTdGFydChhcmdzLCB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvcikudGhlbigoKT0+e1xuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWdub3V0UmVkaXJlY3Q6IHN1Y2Nlc3NmdWxcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaWdub3V0UmVkaXJlY3RDYWxsYmFjayh1cmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25vdXRFbmQodXJsIHx8IHRoaXMuX3JlZGlyZWN0TmF2aWdhdG9yLnVybCkudGhlbihyZXNwb25zZT0+e1xuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWdub3V0UmVkaXJlY3RDYWxsYmFjazogc3VjY2Vzc2Z1bFwiKTtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnbm91dFBvcHVwKGFyZ3MgPSB7fSkge1xuICAgICAgICBsZXQgdXJsID0gYXJncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5zZXR0aW5ncy5wb3B1cF9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgfHwgdGhpcy5zZXR0aW5ncy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmk7XG4gICAgICAgIGFyZ3MucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpID0gdXJsO1xuICAgICAgICBhcmdzLmRpc3BsYXkgPSBcInBvcHVwXCI7XG4gICAgICAgIGlmIChhcmdzLnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSl7XG4gICAgICAgICAgICAvLyB3ZSdyZSBwdXR0aW5nIGEgZHVtbXkgZW50cnkgaW4gaGVyZSBiZWNhdXNlIHdlXG4gICAgICAgICAgICAvLyBuZWVkIGEgdW5pcXVlIGlkIGZyb20gdGhlIHN0YXRlIGZvciBub3RpZmljYXRpb25cbiAgICAgICAgICAgIC8vIHRvIHRoZSBwYXJlbnQgd2luZG93LCB3aGljaCBpcyBuZWNlc3NhcnkgaWYgd2VcbiAgICAgICAgICAgIC8vIHBsYW4gdG8gcmV0dXJuIGJhY2sgdG8gdGhlIGNsaWVudCBhZnRlciBzaWdub3V0XG4gICAgICAgICAgICAvLyBhbmQgc28gd2UgY2FuIGNsb3NlIHRoZSBwb3B1cCBhZnRlciBzaWdub3V0XG4gICAgICAgICAgICBhcmdzLnN0YXRlID0gYXJncy5zdGF0ZSB8fCB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWdub3V0KGFyZ3MsIHRoaXMuX3BvcHVwTmF2aWdhdG9yLCB7XG4gICAgICAgICAgICBzdGFydFVybDogdXJsLFxuICAgICAgICAgICAgcG9wdXBXaW5kb3dGZWF0dXJlczogYXJncy5wb3B1cFdpbmRvd0ZlYXR1cmVzIHx8IHRoaXMuc2V0dGluZ3MucG9wdXBXaW5kb3dGZWF0dXJlcyxcbiAgICAgICAgICAgIHBvcHVwV2luZG93VGFyZ2V0OiBhcmdzLnBvcHVwV2luZG93VGFyZ2V0IHx8IHRoaXMuc2V0dGluZ3MucG9wdXBXaW5kb3dUYXJnZXRcbiAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnNpZ25vdXRQb3B1cDogc3VjY2Vzc2Z1bFwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNpZ25vdXRQb3B1cENhbGxiYWNrKHVybCwga2VlcE9wZW4pIHtcbiAgICAgICAgaWYgKHR5cGVvZihrZWVwT3BlbikgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZih1cmwpID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGtlZXBPcGVuID0gdXJsO1xuICAgICAgICAgICAgdXJsID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZWxpbWl0ZXIgPSAnPyc7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3B1cE5hdmlnYXRvci5jYWxsYmFjayh1cmwsIGtlZXBPcGVuLCBkZWxpbWl0ZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgTG9nLmluZm8oXCJVc2VyTWFuYWdlci5zaWdub3V0UG9wdXBDYWxsYmFjazogc3VjY2Vzc2Z1bFwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3NpZ25vdXQoYXJncywgbmF2aWdhdG9yLCBuYXZpZ2F0b3JQYXJhbXMgPSB7fSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbm91dFN0YXJ0KGFyZ3MsIG5hdmlnYXRvciwgbmF2aWdhdG9yUGFyYW1zKS50aGVuKG5hdlJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaWdub3V0RW5kKG5hdlJlc3BvbnNlLnVybCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfc2lnbm91dFN0YXJ0KGFyZ3MgPSB7fSwgbmF2aWdhdG9yLCBuYXZpZ2F0b3JQYXJhbXMgPSB7fSkge1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnByZXBhcmUobmF2aWdhdG9yUGFyYW1zKS50aGVuKGhhbmRsZSA9PiB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBnb3QgbmF2aWdhdG9yIHdpbmRvdyBoYW5kbGVcIik7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkVXNlcigpLnRoZW4odXNlciA9PiB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25vdXRTdGFydDogbG9hZGVkIGN1cnJlbnQgdXNlciBmcm9tIHN0b3JhZ2VcIik7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmV2b2tlUHJvbWlzZSA9IHRoaXMuX3NldHRpbmdzLnJldm9rZUFjY2Vzc1Rva2VuT25TaWdub3V0ID8gdGhpcy5fcmV2b2tlSW50ZXJuYWwodXNlcikgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV2b2tlUHJvbWlzZS50aGVuKCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaWRfdG9rZW4gPSBhcmdzLmlkX3Rva2VuX2hpbnQgfHwgdXNlciAmJiB1c2VyLmlkX3Rva2VuO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWRfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWdub3V0U3RhcnQ6IFNldHRpbmcgaWRfdG9rZW4gaW50byBzaWdub3V0IHJlcXVlc3RcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmlkX3Rva2VuX2hpbnQgPSBpZF90b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbW92ZVVzZXIoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLl9zaWdub3V0U3RhcnQ6IHVzZXIgcmVtb3ZlZCwgY3JlYXRpbmcgc2lnbm91dCByZXF1ZXN0XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTaWdub3V0UmVxdWVzdChhcmdzKS50aGVuKHNpZ25vdXRSZXF1ZXN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBnb3Qgc2lnbm91dCByZXF1ZXN0XCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yUGFyYW1zLnVybCA9IHNpZ25vdXRSZXF1ZXN0LnVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbm91dFJlcXVlc3Quc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yUGFyYW1zLmlkID0gc2lnbm91dFJlcXVlc3Quc3RhdGUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUubmF2aWdhdGUobmF2aWdhdG9yUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZS5jbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fc2lnbm91dFN0YXJ0OiBFcnJvciBhZnRlciBwcmVwYXJpbmcgbmF2aWdhdG9yLCBjbG9zaW5nIG5hdmlnYXRvciB3aW5kb3dcIik7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9zaWdub3V0RW5kKHVybCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2lnbm91dFJlc3BvbnNlKHVybCkudGhlbihzaWdub3V0UmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX3NpZ25vdXRFbmQ6IGdvdCBzaWdub3V0IHJlc3BvbnNlXCIpO1xuXG4gICAgICAgICAgICByZXR1cm4gc2lnbm91dFJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXZva2VBY2Nlc3NUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRVc2VyKCkudGhlbih1c2VyID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXZva2VJbnRlcm5hbCh1c2VyLCB0cnVlKS50aGVuKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5kZWJ1ZyhcIlVzZXJNYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuOiByZW1vdmluZyB0b2tlbiBwcm9wZXJ0aWVzIGZyb20gdXNlciBhbmQgcmUtc3RvcmluZ1wiKTtcblxuICAgICAgICAgICAgICAgICAgICB1c2VyLmFjY2Vzc190b2tlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHVzZXIucmVmcmVzaF90b2tlbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHVzZXIuZXhwaXJlc19hdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHVzZXIudG9rZW5fdHlwZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVVc2VyKHVzZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW46IHVzZXIgc3RvcmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmxvYWQodXNlcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS50aGVuKCgpPT57XG4gICAgICAgICAgICBMb2cuaW5mbyhcIlVzZXJNYW5hZ2VyLnJldm9rZUFjY2Vzc1Rva2VuOiBhY2Nlc3MgdG9rZW4gcmV2b2tlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9yZXZva2VJbnRlcm5hbCh1c2VyLCByZXF1aXJlZCkge1xuICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgdmFyIGFjY2Vzc190b2tlbiA9IHVzZXIuYWNjZXNzX3Rva2VuO1xuICAgICAgICAgICAgdmFyIHJlZnJlc2hfdG9rZW4gPSB1c2VyLnJlZnJlc2hfdG9rZW47XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbkludGVybmFsKGFjY2Vzc190b2tlbiwgcmVxdWlyZSlcbiAgICAgICAgICAgICAgICAudGhlbihhdFN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmV2b2tlUmVmcmVzaFRva2VuSW50ZXJuYWwocmVmcmVzaF90b2tlbiwgcmVxdWlyZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihydFN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXRTdWNjZXNzICYmICFydFN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIucmV2b2tlQWNjZXNzVG9rZW46IG5vIG5lZWQgdG8gcmV2b2tlIGR1ZSB0byBubyB0b2tlbihzKSwgb3IgSldUIGZvcm1hdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0U3VjY2VzcyB8fCBydFN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIF9yZXZva2VBY2Nlc3NUb2tlbkludGVybmFsKGFjY2Vzc190b2tlbiwgcmVxdWlyZWQpIHtcbiAgICAgICAgLy8gY2hlY2sgZm9yIEpXVCB2cy4gcmVmZXJlbmNlIHRva2VuXG4gICAgICAgIGlmICghYWNjZXNzX3Rva2VuIHx8IGFjY2Vzc190b2tlbi5pbmRleE9mKCcuJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW5SZXZvY2F0aW9uQ2xpZW50LnJldm9rZShhY2Nlc3NfdG9rZW4sIHJlcXVpcmVkKS50aGVuKCgpID0+IHRydWUpO1xuICAgIH1cblxuICAgIF9yZXZva2VSZWZyZXNoVG9rZW5JbnRlcm5hbChyZWZyZXNoX3Rva2VuLCByZXF1aXJlZCkge1xuICAgICAgICBpZiAoIXJlZnJlc2hfdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuUmV2b2NhdGlvbkNsaWVudC5yZXZva2UocmVmcmVzaF90b2tlbiwgcmVxdWlyZWQsIFwicmVmcmVzaF90b2tlblwiKS50aGVuKCgpID0+IHRydWUpO1xuICAgIH1cblxuICAgIHN0YXJ0U2lsZW50UmVuZXcoKSB7XG4gICAgICAgIHRoaXMuX3NpbGVudFJlbmV3U2VydmljZS5zdGFydCgpO1xuICAgIH1cblxuICAgIHN0b3BTaWxlbnRSZW5ldygpIHtcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdTZXJ2aWNlLnN0b3AoKTtcbiAgICB9XG5cbiAgICBnZXQgX3VzZXJTdG9yZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIGB1c2VyOiR7dGhpcy5zZXR0aW5ncy5hdXRob3JpdHl9OiR7dGhpcy5zZXR0aW5ncy5jbGllbnRfaWR9YDtcbiAgICB9XG5cbiAgICBfbG9hZFVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU3RvcmUuZ2V0KHRoaXMuX3VzZXJTdG9yZUtleSkudGhlbihzdG9yYWdlU3RyaW5nID0+IHtcbiAgICAgICAgICAgIGlmIChzdG9yYWdlU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuX2xvYWRVc2VyOiB1c2VyIHN0b3JhZ2VTdHJpbmcgbG9hZGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBVc2VyLmZyb21TdG9yYWdlU3RyaW5nKHN0b3JhZ2VTdHJpbmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlci5fbG9hZFVzZXI6IG5vIHVzZXIgc3RvcmFnZVN0cmluZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdG9yZVVzZXIodXNlcikge1xuICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXIuc3RvcmVVc2VyOiBzdG9yaW5nIHVzZXJcIik7XG5cbiAgICAgICAgICAgIHZhciBzdG9yYWdlU3RyaW5nID0gdXNlci50b1N0b3JhZ2VTdHJpbmcoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyU3RvcmUuc2V0KHRoaXMuX3VzZXJTdG9yZUtleSwgc3RvcmFnZVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBMb2cuZGVidWcoXCJzdG9yZVVzZXIuc3RvcmVVc2VyOiByZW1vdmluZyB1c2VyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTdG9yZS5yZW1vdmUodGhpcy5fdXNlclN0b3JlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIENvcHlyaWdodCAoYykgQnJvY2sgQWxsZW4gJiBEb21pbmljayBCYWllci4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFNlZSBMSUNFTlNFIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG5cbmltcG9ydCB7IExvZyB9IGZyb20gJy4vTG9nLmpzJztcbmltcG9ydCB7IEFjY2Vzc1Rva2VuRXZlbnRzIH0gZnJvbSAnLi9BY2Nlc3NUb2tlbkV2ZW50cy5qcyc7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQuanMnO1xuXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZXJFdmVudHMgZXh0ZW5kcyBBY2Nlc3NUb2tlbkV2ZW50cyB7XG5cbiAgICBjb25zdHJ1Y3RvcihzZXR0aW5ncykge1xuICAgICAgICBzdXBlcihzZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3VzZXJMb2FkZWQgPSBuZXcgRXZlbnQoXCJVc2VyIGxvYWRlZFwiKTtcbiAgICAgICAgdGhpcy5fdXNlclVubG9hZGVkID0gbmV3IEV2ZW50KFwiVXNlciB1bmxvYWRlZFwiKTtcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdFcnJvciA9IG5ldyBFdmVudChcIlNpbGVudCByZW5ldyBlcnJvclwiKTtcbiAgICAgICAgdGhpcy5fdXNlclNpZ25lZE91dCA9IG5ldyBFdmVudChcIlVzZXIgc2lnbmVkIG91dFwiKTtcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkID0gbmV3IEV2ZW50KFwiVXNlciBzZXNzaW9uIGNoYW5nZWRcIik7XG4gICAgfVxuXG4gICAgbG9hZCh1c2VyLCByYWlzZUV2ZW50PXRydWUpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXJFdmVudHMubG9hZFwiKTtcbiAgICAgICAgc3VwZXIubG9hZCh1c2VyKTtcbiAgICAgICAgaWYgKHJhaXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJMb2FkZWQucmFpc2UodXNlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdW5sb2FkKCkge1xuICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlckV2ZW50cy51bmxvYWRcIik7XG4gICAgICAgIHN1cGVyLnVubG9hZCgpO1xuICAgICAgICB0aGlzLl91c2VyVW5sb2FkZWQucmFpc2UoKTtcbiAgICB9XG5cbiAgICBhZGRVc2VyTG9hZGVkKGNiKSB7XG4gICAgICAgIHRoaXMuX3VzZXJMb2FkZWQuYWRkSGFuZGxlcihjYik7XG4gICAgfVxuICAgIHJlbW92ZVVzZXJMb2FkZWQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlckxvYWRlZC5yZW1vdmVIYW5kbGVyKGNiKTtcbiAgICB9XG5cbiAgICBhZGRVc2VyVW5sb2FkZWQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlclVubG9hZGVkLmFkZEhhbmRsZXIoY2IpO1xuICAgIH1cbiAgICByZW1vdmVVc2VyVW5sb2FkZWQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlclVubG9hZGVkLnJlbW92ZUhhbmRsZXIoY2IpO1xuICAgIH1cblxuICAgIGFkZFNpbGVudFJlbmV3RXJyb3IoY2IpIHtcbiAgICAgICAgdGhpcy5fc2lsZW50UmVuZXdFcnJvci5hZGRIYW5kbGVyKGNiKTtcbiAgICB9XG4gICAgcmVtb3ZlU2lsZW50UmVuZXdFcnJvcihjYikge1xuICAgICAgICB0aGlzLl9zaWxlbnRSZW5ld0Vycm9yLnJlbW92ZUhhbmRsZXIoY2IpO1xuICAgIH1cbiAgICBfcmFpc2VTaWxlbnRSZW5ld0Vycm9yKGUpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXJFdmVudHMuX3JhaXNlU2lsZW50UmVuZXdFcnJvclwiLCBlLm1lc3NhZ2UpO1xuICAgICAgICB0aGlzLl9zaWxlbnRSZW5ld0Vycm9yLnJhaXNlKGUpO1xuICAgIH1cblxuICAgIGFkZFVzZXJTaWduZWRPdXQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlclNpZ25lZE91dC5hZGRIYW5kbGVyKGNiKTtcbiAgICB9XG4gICAgcmVtb3ZlVXNlclNpZ25lZE91dChjYikge1xuICAgICAgICB0aGlzLl91c2VyU2lnbmVkT3V0LnJlbW92ZUhhbmRsZXIoY2IpO1xuICAgIH1cbiAgICBfcmFpc2VVc2VyU2lnbmVkT3V0KGUpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiVXNlck1hbmFnZXJFdmVudHMuX3JhaXNlVXNlclNpZ25lZE91dFwiKTtcbiAgICAgICAgdGhpcy5fdXNlclNpZ25lZE91dC5yYWlzZShlKTtcbiAgICB9XG5cbiAgICBhZGRVc2VyU2Vzc2lvbkNoYW5nZWQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkLmFkZEhhbmRsZXIoY2IpO1xuICAgIH1cbiAgICByZW1vdmVVc2VyU2Vzc2lvbkNoYW5nZWQoY2IpIHtcbiAgICAgICAgdGhpcy5fdXNlclNlc3Npb25DaGFuZ2VkLnJlbW92ZUhhbmRsZXIoY2IpO1xuICAgIH1cbiAgICBfcmFpc2VVc2VyU2Vzc2lvbkNoYW5nZWQoZSkge1xuICAgICAgICBMb2cuZGVidWcoXCJVc2VyTWFuYWdlckV2ZW50cy5fcmFpc2VVc2VyU2Vzc2lvbkNoYW5nZWRcIik7XG4gICAgICAgIHRoaXMuX3VzZXJTZXNzaW9uQ2hhbmdlZC5yYWlzZShlKTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5pbXBvcnQgeyBPaWRjQ2xpZW50U2V0dGluZ3MgfSBmcm9tICcuL09pZGNDbGllbnRTZXR0aW5ncy5qcyc7XG5pbXBvcnQgeyBSZWRpcmVjdE5hdmlnYXRvciB9IGZyb20gJy4vUmVkaXJlY3ROYXZpZ2F0b3IuanMnO1xuaW1wb3J0IHsgUG9wdXBOYXZpZ2F0b3IgfSBmcm9tICcuL1BvcHVwTmF2aWdhdG9yLmpzJztcbmltcG9ydCB7IElGcmFtZU5hdmlnYXRvciB9IGZyb20gJy4vSUZyYW1lTmF2aWdhdG9yLmpzJztcbmltcG9ydCB7IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlIH0gZnJvbSAnLi9XZWJTdG9yYWdlU3RhdGVTdG9yZS5qcyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbC5qcyc7XG5cbmNvbnN0IERlZmF1bHRBY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IDYwO1xuY29uc3QgRGVmYXVsdENoZWNrU2Vzc2lvbkludGVydmFsID0gMjAwMDtcbmNvbnN0IERlZmF1bHRRdWVyeVNlc3Npb25TdGF0dXNSZXNwb25zZVR5cGUgPSBcImlkX3Rva2VuXCI7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlclNldHRpbmdzIGV4dGVuZHMgT2lkY0NsaWVudFNldHRpbmdzIHtcbiAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIHBvcHVwX3JlZGlyZWN0X3VyaSxcbiAgICAgICAgcG9wdXBfcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpLFxuICAgICAgICBwb3B1cFdpbmRvd0ZlYXR1cmVzLFxuICAgICAgICBwb3B1cFdpbmRvd1RhcmdldCxcbiAgICAgICAgc2lsZW50X3JlZGlyZWN0X3VyaSxcbiAgICAgICAgc2lsZW50UmVxdWVzdFRpbWVvdXQsXG4gICAgICAgIGF1dG9tYXRpY1NpbGVudFJlbmV3ID0gZmFsc2UsXG4gICAgICAgIGluY2x1ZGVJZFRva2VuSW5TaWxlbnRSZW5ldyA9IHRydWUsXG4gICAgICAgIG1vbml0b3JTZXNzaW9uID0gdHJ1ZSxcbiAgICAgICAgY2hlY2tTZXNzaW9uSW50ZXJ2YWwgPSBEZWZhdWx0Q2hlY2tTZXNzaW9uSW50ZXJ2YWwsXG4gICAgICAgIHN0b3BDaGVja1Nlc3Npb25PbkVycm9yID0gdHJ1ZSxcbiAgICAgICAgcXVlcnlfc3RhdHVzX3Jlc3BvbnNlX3R5cGUgPSBEZWZhdWx0UXVlcnlTZXNzaW9uU3RhdHVzUmVzcG9uc2VUeXBlLFxuICAgICAgICByZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCA9IGZhbHNlLFxuICAgICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSA9IERlZmF1bHRBY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZSxcbiAgICAgICAgcmVkaXJlY3ROYXZpZ2F0b3IgPSBuZXcgUmVkaXJlY3ROYXZpZ2F0b3IoKSxcbiAgICAgICAgcG9wdXBOYXZpZ2F0b3IgPSBuZXcgUG9wdXBOYXZpZ2F0b3IoKSxcbiAgICAgICAgaWZyYW1lTmF2aWdhdG9yID0gbmV3IElGcmFtZU5hdmlnYXRvcigpLFxuICAgICAgICB1c2VyU3RvcmUgPSBuZXcgV2ViU3RvcmFnZVN0YXRlU3RvcmUoeyBzdG9yZTogR2xvYmFsLnNlc3Npb25TdG9yYWdlIH0pXG4gICAgfSA9IHt9KSB7XG4gICAgICAgIHN1cGVyKGFyZ3VtZW50c1swXSk7XG5cbiAgICAgICAgdGhpcy5fcG9wdXBfcmVkaXJlY3RfdXJpID0gcG9wdXBfcmVkaXJlY3RfdXJpO1xuICAgICAgICB0aGlzLl9wb3B1cF9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmkgPSBwb3B1cF9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmk7XG4gICAgICAgIHRoaXMuX3BvcHVwV2luZG93RmVhdHVyZXMgPSBwb3B1cFdpbmRvd0ZlYXR1cmVzO1xuICAgICAgICB0aGlzLl9wb3B1cFdpbmRvd1RhcmdldCA9IHBvcHVwV2luZG93VGFyZ2V0O1xuXG4gICAgICAgIHRoaXMuX3NpbGVudF9yZWRpcmVjdF91cmkgPSBzaWxlbnRfcmVkaXJlY3RfdXJpO1xuICAgICAgICB0aGlzLl9zaWxlbnRSZXF1ZXN0VGltZW91dCA9IHNpbGVudFJlcXVlc3RUaW1lb3V0O1xuICAgICAgICB0aGlzLl9hdXRvbWF0aWNTaWxlbnRSZW5ldyA9ICEhYXV0b21hdGljU2lsZW50UmVuZXc7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVJZFRva2VuSW5TaWxlbnRSZW5ldyA9IGluY2x1ZGVJZFRva2VuSW5TaWxlbnRSZW5ldztcbiAgICAgICAgdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTtcblxuICAgICAgICB0aGlzLl9tb25pdG9yU2Vzc2lvbiA9IG1vbml0b3JTZXNzaW9uO1xuICAgICAgICB0aGlzLl9jaGVja1Nlc3Npb25JbnRlcnZhbCA9IGNoZWNrU2Vzc2lvbkludGVydmFsO1xuICAgICAgICB0aGlzLl9zdG9wQ2hlY2tTZXNzaW9uT25FcnJvciA9IHN0b3BDaGVja1Nlc3Npb25PbkVycm9yO1xuICAgICAgICB0aGlzLl9xdWVyeV9zdGF0dXNfcmVzcG9uc2VfdHlwZSA9IHF1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlO1xuICAgICAgICB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dCA9IHJldm9rZUFjY2Vzc1Rva2VuT25TaWdub3V0O1xuXG4gICAgICAgIHRoaXMuX3JlZGlyZWN0TmF2aWdhdG9yID0gcmVkaXJlY3ROYXZpZ2F0b3I7XG4gICAgICAgIHRoaXMuX3BvcHVwTmF2aWdhdG9yID0gcG9wdXBOYXZpZ2F0b3I7XG4gICAgICAgIHRoaXMuX2lmcmFtZU5hdmlnYXRvciA9IGlmcmFtZU5hdmlnYXRvcjtcblxuICAgICAgICB0aGlzLl91c2VyU3RvcmUgPSB1c2VyU3RvcmU7XG4gICAgfVxuXG4gICAgZ2V0IHBvcHVwX3JlZGlyZWN0X3VyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwX3JlZGlyZWN0X3VyaTtcbiAgICB9XG4gICAgZ2V0IHBvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcHVwX3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaTtcbiAgICB9XG4gICAgZ2V0IHBvcHVwV2luZG93RmVhdHVyZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3B1cFdpbmRvd0ZlYXR1cmVzO1xuICAgIH1cbiAgICBnZXQgcG9wdXBXaW5kb3dUYXJnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3B1cFdpbmRvd1RhcmdldDtcbiAgICB9XG5cbiAgICBnZXQgc2lsZW50X3JlZGlyZWN0X3VyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpbGVudF9yZWRpcmVjdF91cmk7XG4gICAgfVxuICAgICBnZXQgc2lsZW50UmVxdWVzdFRpbWVvdXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaWxlbnRSZXF1ZXN0VGltZW91dDtcbiAgICB9XG4gICAgZ2V0IGF1dG9tYXRpY1NpbGVudFJlbmV3KCkge1xuICAgICAgICByZXR1cm4gISEodGhpcy5zaWxlbnRfcmVkaXJlY3RfdXJpICYmIHRoaXMuX2F1dG9tYXRpY1NpbGVudFJlbmV3KTtcbiAgICB9XG4gICAgZ2V0IGluY2x1ZGVJZFRva2VuSW5TaWxlbnRSZW5ldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVJZFRva2VuSW5TaWxlbnRSZW5ldztcbiAgICB9XG4gICAgZ2V0IGFjY2Vzc1Rva2VuRXhwaXJpbmdOb3RpZmljYXRpb25UaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWNjZXNzVG9rZW5FeHBpcmluZ05vdGlmaWNhdGlvblRpbWU7XG4gICAgfVxuXG4gICAgZ2V0IG1vbml0b3JTZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9uaXRvclNlc3Npb247XG4gICAgfVxuICAgIGdldCBjaGVja1Nlc3Npb25JbnRlcnZhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrU2Vzc2lvbkludGVydmFsO1xuICAgIH1cbiAgICBnZXQgc3RvcENoZWNrU2Vzc2lvbk9uRXJyb3IoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3BDaGVja1Nlc3Npb25PbkVycm9yO1xuICAgIH1cbiAgICBnZXQgcXVlcnlfc3RhdHVzX3Jlc3BvbnNlX3R5cGUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5X3N0YXR1c19yZXNwb25zZV90eXBlO1xuICAgIH1cbiAgICBnZXQgcmV2b2tlQWNjZXNzVG9rZW5PblNpZ25vdXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXZva2VBY2Nlc3NUb2tlbk9uU2lnbm91dDtcbiAgICB9XG5cbiAgICBnZXQgcmVkaXJlY3ROYXZpZ2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWRpcmVjdE5hdmlnYXRvcjtcbiAgICB9XG4gICAgZ2V0IHBvcHVwTmF2aWdhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9wdXBOYXZpZ2F0b3I7XG4gICAgfVxuICAgIGdldCBpZnJhbWVOYXZpZ2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZnJhbWVOYXZpZ2F0b3I7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXJTdG9yZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTdG9yZTtcbiAgICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgKGMpIEJyb2NrIEFsbGVuICYgRG9taW5pY2sgQmFpZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tICcuL0xvZy5qcyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBXZWJTdG9yYWdlU3RhdGVTdG9yZSB7XG4gICAgY29uc3RydWN0b3Ioe3ByZWZpeCA9IFwib2lkYy5cIiwgc3RvcmUgPSBHbG9iYWwubG9jYWxTdG9yYWdlfSA9IHt9KSB7XG4gICAgICAgIHRoaXMuX3N0b3JlID0gc3RvcmU7XG4gICAgICAgIHRoaXMuX3ByZWZpeCA9IHByZWZpeDtcbiAgICB9XG5cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBMb2cuZGVidWcoXCJXZWJTdG9yYWdlU3RhdGVTdG9yZS5zZXRcIiwga2V5KTtcblxuICAgICAgICBrZXkgPSB0aGlzLl9wcmVmaXggKyBrZXk7XG5cbiAgICAgICAgdGhpcy5fc3RvcmUuc2V0SXRlbShrZXksIHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgZ2V0KGtleSkge1xuICAgICAgICBMb2cuZGVidWcoXCJXZWJTdG9yYWdlU3RhdGVTdG9yZS5nZXRcIiwga2V5KTtcblxuICAgICAgICBrZXkgPSB0aGlzLl9wcmVmaXggKyBrZXk7XG5cbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLl9zdG9yZS5nZXRJdGVtKGtleSk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpdGVtKTtcbiAgICB9XG5cbiAgICByZW1vdmUoa2V5KSB7XG4gICAgICAgIExvZy5kZWJ1ZyhcIldlYlN0b3JhZ2VTdGF0ZVN0b3JlLnJlbW92ZVwiLCBrZXkpO1xuXG4gICAgICAgIGtleSA9IHRoaXMuX3ByZWZpeCArIGtleTtcblxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMuX3N0b3JlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgdGhpcy5fc3RvcmUucmVtb3ZlSXRlbShrZXkpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaXRlbSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsS2V5cygpIHtcbiAgICAgICAgTG9nLmRlYnVnKFwiV2ViU3RvcmFnZVN0YXRlU3RvcmUuZ2V0QWxsS2V5c1wiKTtcblxuICAgICAgICB2YXIga2V5cyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9zdG9yZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLl9zdG9yZS5rZXkoaW5kZXgpO1xuXG4gICAgICAgICAgICBpZiAoa2V5LmluZGV4T2YodGhpcy5fcHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkuc3Vic3RyKHRoaXMuX3ByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoa2V5cyk7XG4gICAgfVxufVxuIiwiLy8gTk9USUNFOiB0aGUgY29kZSBpbiB0aGlzIGZpbGUgb3JpZ2luYWxseSBkZXZlbG9wZWQgYnkgTWljcm9zb2Z0XG4vLyBvcmlnaW5hbCBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZUFEL2F6dXJlLWFjdGl2ZWRpcmVjdG9yeS1saWJyYXJ5LWZvci1qcy9ibG9iL21hc3Rlci9saWIvYWRhbC5qcyNMMTAyOVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBZGFsSlMgdjEuMC44XG4vLyBAcHJlc2VydmUgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgT3BlbiBUZWNobm9sb2dpZXMsIEluYy5cbi8vIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbi8vIEFwYWNoZSBMaWNlbnNlIDIuMFxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4vLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4vLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJhbmRvbSgpIHtcbiAgICB2YXIgZ3VpZEhvbGRlciA9ICd4eHh4eHh4eHh4eHg0eHh4eXh4eHh4eHh4eHh4eHh4eCc7XG4gICAgdmFyIGhleCA9ICcwMTIzNDU2Nzg5YWJjZGVmJztcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGd1aWRSZXNwb25zZSA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndWlkSG9sZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChndWlkSG9sZGVyW2ldICE9PSAnLScgJiYgZ3VpZEhvbGRlcltpXSAhPT0gJzQnKSB7XG4gICAgICAgICAgICAvLyBlYWNoIHggYW5kIHkgbmVlZHMgdG8gYmUgcmFuZG9tXG4gICAgICAgICAgICByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChndWlkSG9sZGVyW2ldID09PSAneCcpIHtcbiAgICAgICAgICAgIGd1aWRSZXNwb25zZSArPSBoZXhbcl07XG4gICAgICAgIH0gZWxzZSBpZiAoZ3VpZEhvbGRlcltpXSA9PT0gJ3knKSB7XG4gICAgICAgICAgICAvLyBjbG9jay1zZXEtYW5kLXJlc2VydmVkIGZpcnN0IGhleCBpcyBmaWx0ZXJlZCBhbmQgcmVtYWluaW5nIGhleCB2YWx1ZXMgYXJlIHJhbmRvbVxuICAgICAgICAgICAgciAmPSAweDM7IC8vIGJpdCBhbmQgd2l0aCAwMDExIHRvIHNldCBwb3MgMiB0byB6ZXJvID8wPz9cbiAgICAgICAgICAgIHIgfD0gMHg4OyAvLyBzZXQgcG9zIDMgdG8gMSBhcyAxPz8/XG4gICAgICAgICAgICBndWlkUmVzcG9uc2UgKz0gaGV4W3JdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ3VpZFJlc3BvbnNlICs9IGd1aWRIb2xkZXJbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGd1aWRSZXNwb25zZTtcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/dist/oidc-client.min.js b/dist/oidc-client.min.js index 38e7c95d..909062d6 100644 --- a/dist/oidc-client.min.js +++ b/dist/oidc-client.min.js @@ -1,13 +1,13 @@ var Oidc=function(t){var e={};function __webpack_require__(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}return __webpack_require__.m=t,__webpack_require__.c=e,__webpack_require__.d=function(t,e,r){__webpack_require__.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},__webpack_require__.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},__webpack_require__.t=function(t,e){if(1&e&&(t=__webpack_require__(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)__webpack_require__.d(r,n,function(e){return t[e]}.bind(null,n));return r},__webpack_require__.n=function(t){var e=t&&t.__esModule?function getDefault(){return t.default}:function getModuleExports(){return t};return __webpack_require__.d(e,"a",e),e},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=374)}([function(t,e,r){var n=r(3),i=r(27),o=r(14),s=r(13),a=r(21),u=function(t,e,r){var c,f,h,l,p=t&u.F,g=t&u.G,d=t&u.S,v=t&u.P,y=t&u.B,m=g?n:d?n[e]||(n[e]={}):(n[e]||{}).prototype,S=g?i:i[e]||(i[e]={}),_=S.prototype||(S.prototype={});for(c in g&&(r=e),r)h=((f=!p&&m&&void 0!==m[c])?m:r)[c],l=y&&f?a(h,n):v&&"function"==typeof h?a(Function.call,h):h,m&&s(m,c,h,t&u.U),S[c]!=h&&o(S,c,l),v&&_[c]!=h&&(_[c]=h)};n.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,r){var n=r(5);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function defineProperties(t,e){for(var r=0;r=4){for(var t=arguments.length,e=Array(t),r=0;r=3){for(var t=arguments.length,e=Array(t),r=0;r=2){for(var t=arguments.length,e=Array(t),r=0;r=1){for(var t=arguments.length,e=Array(t),r=0;r0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(1),i=r(145),o=r(26),s=Object.defineProperty;e.f=r(9)?Object.defineProperty:function defineProperty(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return s(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e,r){t.exports=!r(4)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(25);t.exports=function(t){return Object(n(t))}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(0),i=r(4),o=r(25),s=/"/g,a=function(t,e,r,n){var i=String(o(t)),a="<"+e;return""!==r&&(a+=" "+r+'="'+String(n).replace(s,""")+'"'),a+">"+i+""};t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*i(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",r)}},function(t,e,r){var n=r(3),i=r(14),o=r(18),s=r(42)("src"),a=Function.toString,u=(""+a).split("toString");r(27).inspectSource=function(t){return a.call(t)},(t.exports=function(t,e,r,a){var c="function"==typeof r;c&&(o(r,"name")||i(r,"name",e)),t[e]!==r&&(c&&(o(r,s)||i(r,s,t[e]?""+t[e]:u.join(String(e)))),t===n?t[e]=r:a?t[e]?t[e]=r:i(t,e,r):(delete t[e],i(t,e,r)))})(Function.prototype,"toString",function toString(){return"function"==typeof this&&this[s]||a.call(this)})},function(t,e,r){var n=r(8),i=r(43);t.exports=r(9)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(18),i=r(10),o=r(96)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e,r){var n=r(51),i=r(43),o=r(17),s=r(26),a=r(18),u=r(145),c=Object.getOwnPropertyDescriptor;e.f=r(9)?c:function getOwnPropertyDescriptor(t,e){if(t=o(t),e=s(e,!0),u)try{return c(t,e)}catch(t){}if(a(t,e))return i(!n.f.call(t,e),t[e])}},function(t,e,r){var n=r(52),i=r(25);t.exports=function(t){return n(i(t))}},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e,r){"use strict";var n=r(4);t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e,r){var n=r(11);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(21),i=r(52),o=r(10),s=r(7),a=r(79);t.exports=function(t,e){var r=1==t,u=2==t,c=3==t,f=4==t,h=6==t,l=5==t||h,p=e||a;return function(e,a,g){for(var d,v,y=o(e),m=i(y),S=n(a,g,3),_=s(m.length),b=0,F=r?p(e,_):u?p(e,0):void 0;_>b;b++)if((l||b in m)&&(v=S(d=m[b],b,y),t))if(r)F[b]=v;else if(v)switch(t){case 3:return!0;case 5:return d;case 6:return b;case 2:F.push(d)}else if(f)return!1;return h?-1:c||f?f:F}}},function(t,e,r){var n=r(0),i=r(27),o=r(4);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],s={};s[t]=e(r),n(n.S+n.F*o(function(){r(1)}),"Object",s)}},function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:r)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,r){var n=r(5);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){var r=t.exports={version:"2.5.5"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(124),i=r(0),o=r(66)("metadata"),s=o.store||(o.store=new(r(121))),a=function(t,e,r){var i=s.get(t);if(!i){if(!r)return;s.set(t,i=new n)}var o=i.get(e);if(!o){if(!r)return;i.set(e,o=new n)}return o};t.exports={store:s,map:a,has:function(t,e,r){var n=a(e,r,!1);return void 0!==n&&n.has(t)},get:function(t,e,r){var n=a(e,r,!1);return void 0===n?void 0:n.get(t)},set:function(t,e,r,n){a(r,n,!0).set(t,e)},keys:function(t,e){var r=a(t,e,!1),n=[];return r&&r.forEach(function(t,e){n.push(e)}),n},key:function(t){return void 0===t||"symbol"==typeof t?t:String(t)},exp:function(t){i(i.S,"Reflect",t)}}},function(t,e,r){"use strict";if(r(9)){var n=r(41),i=r(3),o=r(4),s=r(0),a=r(56),u=r(73),c=r(21),f=r(35),h=r(43),l=r(14),p=r(33),g=r(24),d=r(7),v=r(119),y=r(39),m=r(26),S=r(18),_=r(50),b=r(5),F=r(10),w=r(82),E=r(38),x=r(15),A=r(37).f,P=r(80),k=r(42),I=r(6),C=r(22),R=r(65),B=r(58),T=r(77),M=r(46),O=r(61),U=r(36),D=r(78),N=r(129),L=r(8),j=r(16),H=L.f,K=j.f,V=i.RangeError,W=i.TypeError,q=i.Uint8Array,J=Array.prototype,z=u.ArrayBuffer,G=u.DataView,Y=C(0),X=C(2),$=C(3),Q=C(4),Z=C(5),tt=C(6),et=R(!0),rt=R(!1),nt=T.values,it=T.keys,ot=T.entries,st=J.lastIndexOf,at=J.reduce,ut=J.reduceRight,ct=J.join,ft=J.sort,ht=J.slice,lt=J.toString,pt=J.toLocaleString,gt=I("iterator"),dt=I("toStringTag"),vt=k("typed_constructor"),yt=k("def_constructor"),mt=a.CONSTR,St=a.TYPED,_t=a.VIEW,bt=C(1,function(t,e){return At(B(t,t[yt]),e)}),Ft=o(function(){return 1===new q(new Uint16Array([1]).buffer)[0]}),wt=!!q&&!!q.prototype.set&&o(function(){new q(1).set({})}),Et=function(t,e){var r=g(t);if(r<0||r%e)throw V("Wrong offset!");return r},xt=function(t){if(b(t)&&St in t)return t;throw W(t+" is not a typed array!")},At=function(t,e){if(!(b(t)&&vt in t))throw W("It is not a typed array constructor!");return new t(e)},Pt=function(t,e){return kt(B(t,t[yt]),e)},kt=function(t,e){for(var r=0,n=e.length,i=At(t,n);n>r;)i[r]=e[r++];return i},It=function(t,e,r){H(t,e,{get:function(){return this._d[r]}})},Ct=function from(t){var e,r,n,i,o,s,a=F(t),u=arguments.length,f=u>1?arguments[1]:void 0,h=void 0!==f,l=P(a);if(void 0!=l&&!w(l)){for(s=l.call(a),n=[],e=0;!(o=s.next()).done;e++)n.push(o.value);a=n}for(h&&u>2&&(f=c(f,arguments[2],2)),e=0,r=d(a.length),i=At(this,r);r>e;e++)i[e]=h?f(a[e],e):a[e];return i},Rt=function of(){for(var t=0,e=arguments.length,r=At(this,e);e>t;)r[t]=arguments[t++];return r},Bt=!!q&&o(function(){pt.call(new q(1))}),Tt=function toLocaleString(){return pt.apply(Bt?ht.call(xt(this)):xt(this),arguments)},Mt={copyWithin:function copyWithin(t,e){return N.call(xt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function every(t){return Q(xt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function fill(t){return D.apply(xt(this),arguments)},filter:function filter(t){return Pt(this,X(xt(this),t,arguments.length>1?arguments[1]:void 0))},find:function find(t){return Z(xt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function findIndex(t){return tt(xt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function forEach(t){Y(xt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function indexOf(t){return rt(xt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function includes(t){return et(xt(this),t,arguments.length>1?arguments[1]:void 0)},join:function join(t){return ct.apply(xt(this),arguments)},lastIndexOf:function lastIndexOf(t){return st.apply(xt(this),arguments)},map:function map(t){return bt(xt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function reduce(t){return at.apply(xt(this),arguments)},reduceRight:function reduceRight(t){return ut.apply(xt(this),arguments)},reverse:function reverse(){for(var t,e=xt(this).length,r=Math.floor(e/2),n=0;n1?arguments[1]:void 0)},sort:function sort(t){return ft.call(xt(this),t)},subarray:function subarray(t,e){var r=xt(this),n=r.length,i=y(t,n);return new(B(r,r[yt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,d((void 0===e?n:y(e,n))-i))}},Ot=function slice(t,e){return Pt(this,ht.call(xt(this),t,e))},Ut=function set(t){xt(this);var e=Et(arguments[1],1),r=this.length,n=F(t),i=d(n.length),o=0;if(i+e>r)throw V("Wrong length!");for(;o255?255:255&n),i.v[p](r*e+i.o,n,Ft)}(this,r,t)},enumerable:!0})};S?(g=r(function(t,r,n,i){f(t,g,c,"_d");var o,s,a,u,h=0,p=0;if(b(r)){if(!(r instanceof z||"ArrayBuffer"==(u=_(r))||"SharedArrayBuffer"==u))return St in r?kt(g,r):Ct.call(g,r);o=r,p=Et(n,e);var y=r.byteLength;if(void 0===i){if(y%e)throw V("Wrong length!");if((s=y-p)<0)throw V("Wrong length!")}else if((s=d(i)*e)+p>y)throw V("Wrong length!");a=s/e}else a=v(r),o=new z(s=a*e);for(l(t,"_d",{b:o,o:p,l:s,e:a,v:new G(o)});hS;S++)if((v=e?m(s(g=t[S])[0],g[1]):m(t[S]))===c||v===f)return v}else for(d=y.call(t);!(g=d.next()).done;)if((v=i(d,m,g.value,e))===c||v===f)return v}).BREAK=c,e.RETURN=f},function(t,e){t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,e,r){"use strict";var n=r(3),i=r(8),o=r(9),s=r(6)("species");t.exports=function(t){var e=n[t];o&&e&&!e[s]&&i.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e,r){var n=r(143),i=r(95).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return n(t,i)}},function(t,e,r){var n=r(1),i=r(142),o=r(95),s=r(96)("IE_PROTO"),a=function(){},u=function(){var t,e=r(98)("iframe"),n=o.length;for(e.style.display="none",r(94).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("